Prechádzať zdrojové kódy

[ZF-7454] Zend_Date:

- fix for checking date without hour at DST change

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@17610 44c647ce-9c0f-0410-b52a-842ac1e357ba
thomas 16 rokov pred
rodič
commit
0dcbae4415
2 zmenil súbory, kde vykonal 13 pridanie a 3 odobranie
  1. 4 3
      library/Zend/Date.php
  2. 9 0
      tests/Zend/DateTest.php

+ 4 - 3
library/Zend/Date.php

@@ -4583,7 +4583,7 @@ class Zend_Date extends Zend_Date_DateObject
         if (((strpos($format, 'Y') !== false) or (strpos($format, 'y') !== false)) and
             (!isset($parsed['year']))) {
             // Year expected but not found
-            return false;
+                return false;
         }
 
         if ((strpos($format, 'M') !== false) and (!isset($parsed['month']))) {
@@ -4599,7 +4599,7 @@ class Zend_Date extends Zend_Date_DateObject
         if (((strpos($format, 'H') !== false) or (strpos($format, 'h') !== false)) and
             (!isset($parsed['hour']))) {
             // Hour expected but not found
-            return false;
+                return false;
         }
 
         if ((strpos($format, 'm') !== false) and (!isset($parsed['minute']))) {
@@ -4614,7 +4614,7 @@ class Zend_Date extends Zend_Date_DateObject
 
         // Set not given dateparts
         if (isset($parsed['hour']) === false) {
-            $parsed['hour'] = 0;
+            $parsed['hour'] = 12;
         }
 
         if (isset($parsed['minute']) === false) {
@@ -4646,6 +4646,7 @@ class Zend_Date extends Zend_Date_DateObject
         $date      = new self($parsed, null, $locale);
         $timestamp = $date->mktime($parsed['hour'], $parsed['minute'], $parsed['second'],
                                    $parsed['month'], $parsed['day'], $parsed['year']);
+
         if ($parsed['year'] != $date->date('Y', $timestamp)) {
             // Given year differs from parsed year
             return false;

+ 9 - 0
tests/Zend/DateTest.php

@@ -5453,6 +5453,15 @@ class Zend_DateTest extends PHPUnit_Framework_TestCase
 
         $this->assertSame('2009-08-14T04:31:30+05:00', $result->get(Zend_Date::W3C));
     }
+
+    /**
+     * @ZF-7454
+     */
+    public function testSetWithoutHourAtDSTChange()
+    {
+        $this->assertTrue(Zend_Date::isDate("23/05/2010", "dd/MM/yyyy", "it_IT"));
+        $this->assertTrue(Zend_Date::isDate("24/05/2010", "dd/MM/yyyy", "it_IT"));
+    }
 }
 
 class Zend_Date_TestHelper extends Zend_Date