Browse Source

DateTimeHelper::parse(): expanded pattern to no longer match ambiguous iso strings specifying month with timezone

Fabian Peter Hammerle 7 years ago
parent
commit
245e8c4e78
2 changed files with 2 additions and 1 deletions
  1. 1 1
      DateTimeHelper.php
  2. 1 0
      tests/DateTimeHelperTest.php

+ 1 - 1
DateTimeHelper.php

@@ -48,7 +48,7 @@ class DateTimeHelper
                     $interval = new \DateInterval('P1D');
                 }
                 return new \DatePeriod($start, $interval, 0);
-            } elseif(preg_match('/^\d{4}-(?P<m>\d{2})( ?' . self::_timezone_iso_pattern . ')?$/', $text, $attr)) {
+            } elseif(preg_match('/^\d{4}-(?P<m>\d{2})(( (?=-)| ?(?!-))' . self::_timezone_iso_pattern . ')?$/', $text, $attr)) {
                 return new \DatePeriod(
                     new \DateTime($text),
                     new \DateInterval('P1M'),

+ 1 - 0
tests/DateTimeHelperTest.php

@@ -131,6 +131,7 @@ class DateTimeHelperTest extends \PHPUnit_Framework_TestCase
             ['     '],
             [''],
             ['2016--12'],
+            ['2016-01-08:00'],
             ['2016-10-12 08:20#01'],
             [1],
             [false],