Procházet zdrojové kódy

[Locale] support for E (day of week)

Igor Wiedler před 14 roky
rodič
revize
49752f104b

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

@@ -40,7 +40,7 @@ class StubIntlDateFormatter
 
     public function format($timestamp)
     {
-        $regExp = "/('(M+|L+|y+|d+|G+|Q+|q+|h+|D+|[^MLydGQqhD])|M+|L+|y+|d+|G+|Q+|q+|h+|D+)/";
+        $regExp = "/('(M+|L+|y+|d+|G+|Q+|q+|h+|D+|E+|[^MLydGQqhDE])|M+|L+|y+|d+|G+|Q+|q+|h+|D+|E+)/";
 
         $callback = function($matches) use ($timestamp) {
             $pattern = $matches[0];
@@ -120,6 +120,20 @@ class StubIntlDateFormatter
                     $dayOfYear = gmdate('z', $timestamp) + 1;
                     return str_pad($dayOfYear, $length, '0', STR_PAD_LEFT);
                     break;
+
+                case 'E':
+                    $dayOfWeek = gmdate('l', $timestamp);
+                    switch ($length) {
+                        case 4:
+                            return $dayOfWeek;
+                            break;
+                        case 5:
+                            return $dayOfWeek[0];
+                            break;
+                        default:
+                            return substr($dayOfWeek, 0, 3);
+                    }
+                    break;
             }  
         };
 

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

@@ -98,6 +98,16 @@ class StubIntlDateFormatterTest extends \PHPUnit_Framework_TestCase
             array('D', 86400, '2'), // 1 day
             array('D', 31536000, '1'), // 1 year
             array('D', 31622400, '2'), // 1 year + 1 day
+
+            /* day of week */
+            array('E', 0, 'Thu'),
+            array('EE', 0, 'Thu'),
+            array('EEE', 0, 'Thu'),
+            array('EEEE', 0, 'Thursday'),
+            array('EEEEE', 0, 'T'),
+            array('EEEEEE', 0, 'Thu'),
+
+            array('E', 1296950400, 'Sun'),
         );
     }