Переглянути джерело

[Locale] support for K (12-hour (0-11))

Igor Wiedler 14 роки тому
батько
коміт
6b26f8296d

+ 7 - 1
src/Symfony/Component/Locale/Stub/StubIntlDateFormatter.php

@@ -40,7 +40,7 @@ class StubIntlDateFormatter
 
     public function format($timestamp)
     {
-        $specialChars = 'MLydGQqhDEaHk';
+        $specialChars = 'MLydGQqhDEaHkK';
         $specialCharsArray = str_split($specialChars);
         $specialCharsMatch = implode('|', array_map(function($char) {
             return $char . '+';
@@ -153,6 +153,12 @@ class StubIntlDateFormatter
                     $hourOfDay = ('0' == $hourOfDay) ? '24' : $hourOfDay;
                     return str_pad($hourOfDay, $length, '0', STR_PAD_LEFT);
                     break;
+
+                case 'K':
+                    $hourOfDay = gmdate('g', $timestamp);
+                    $hourOfDay = ('12' == $hourOfDay) ? '0' : $hourOfDay;
+                    return str_pad($hourOfDay, $length, '0', STR_PAD_LEFT);
+                    break;
             }
         };
 

+ 10 - 1
tests/Symfony/Tests/Component/Locale/Stub/StubIntlDateFormatterTest.php

@@ -85,7 +85,7 @@ class StubIntlDateFormatterTest extends \PHPUnit_Framework_TestCase
             // 10 months
             array('QQQQ', 23587200, '4th quarter'),
 
-            /* 12-hour */
+            /* 12-hour (1-12) */
             array('h', 0, '12'),
             array('hh', 0, '12'),
             array('hhh', 0, '012'),
@@ -142,6 +142,15 @@ class StubIntlDateFormatterTest extends \PHPUnit_Framework_TestCase
             array('k', 3600, '1'),
             array('k', 43200, '12'),
             array('k', 46800, '13'),
+
+            /* 12-hour (0-11) */
+            array('K', 0, '0'),
+            array('KK', 0, '00'),
+            array('KKK', 0, '000'),
+
+            array('K', 1, '0'),
+            array('K', 3600, '1'),
+            array('K', 43200, '0'), // 12 hours
         );
     }