Ver código fonte

[ZF-7554, ZF-7589] Zend_Date:

- fix for array handling
- fix for partitial instance creation

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@17607 44c647ce-9c0f-0410-b52a-842ac1e357ba
thomas 16 anos atrás
pai
commit
1fb65ed37a
2 arquivos alterados com 16 adições e 7 exclusões
  1. 5 5
      library/Zend/Date.php
  2. 11 2
      tests/Zend/DateTest.php

+ 5 - 5
library/Zend/Date.php

@@ -152,7 +152,7 @@ class Zend_Date extends Zend_Date_DateObject
             $locale = $date;
             $date   = null;
             $part   = null;
-        } else if (($part !== null) and !defined($part) and Zend_Locale::isLocale($date, true, false)) {
+        } else if (($part !== null) and !defined($part) and Zend_Locale::isLocale($part, true, false)) {
             $locale = $part;
             $part   = null;
         }
@@ -2838,9 +2838,9 @@ class Zend_Date extends Zend_Date_DateObject
             $date = $date->get('d.M.Y');
         } else {
             if (is_array($date)) {
-                if ((isset($time['year']) === true) or (isset($time['month']) === true) or
-                    (isset($time['day']) === true)) {
-                    $parsed = $time;
+                if ((isset($date['year']) === true) or (isset($date['month']) === true) or
+                    (isset($date['day']) === true)) {
+                    $parsed = $date;
                 } else {
                     require_once 'Zend/Date/Exception.php';
                     throw new Zend_Date_Exception("no day,month or year given in array");
@@ -4383,7 +4383,7 @@ class Zend_Date extends Zend_Date_DateObject
      */
     public function subMilliSecond($milli = null, $precision = null)
     {
-        return $this->addMilliSecond(0 - $milli);
+        return $this->addMilliSecond(0 - $milli, $precision);
     }
 
     /**

+ 11 - 2
tests/Zend/DateTest.php

@@ -5438,12 +5438,21 @@ class Zend_DateTest extends PHPUnit_Framework_TestCase
      */
     public function testZF7202()
     {
-        $locale = new Zend_Locale('de_AT');
-
         $date     = new Zend_Date();
         $timezone = $date->getTimezoneFromString('03:58:09 Jul 06, 2009 Indian/Reunion');
         $this->assertSame('Indian/Reunion', $timezone);
     }
+
+    /**
+     * @ZF-7589
+     */
+    public function testSetDateWithArray()
+    {
+        $date   = new Zend_Date(1234567890);
+        $result = $date->setDate(array('year' => 2009, 'month' => 8, 'day' => 14));
+
+        $this->assertSame('2009-08-14T04:31:30+05:00', $result->get(Zend_Date::W3C));
+    }
 }
 
 class Zend_Date_TestHelper extends Zend_Date