diff -r 5a6b6e770365 -r 68c69c656a2c web/lib/Zend/Date.php --- a/web/lib/Zend/Date.php Thu May 07 15:10:09 2015 +0200 +++ b/web/lib/Zend/Date.php Thu May 07 15:16:02 2015 +0200 @@ -14,9 +14,9 @@ * * @category Zend * @package Zend_Date - * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com) + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) * @license http://framework.zend.com/license/new-bsd New BSD License - * @version $Id: Date.php 24880 2012-06-12 20:35:18Z matthew $ + * @version $Id$ */ /** @@ -30,7 +30,7 @@ /** * @category Zend * @package Zend_Date - * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com) + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) * @license http://framework.zend.com/license/new-bsd New BSD License */ class Zend_Date extends Zend_Date_DateObject @@ -354,7 +354,7 @@ * Sets a new timestamp * * @param integer|string|array|Zend_Date $timestamp Timestamp to set - * @return Zend_Date Provides fluid interface + * @return Zend_Date Provides a fluent interface * @throws Zend_Date_Exception */ public function setTimestamp($timestamp) @@ -366,7 +366,7 @@ * Adds a timestamp * * @param integer|string|array|Zend_Date $timestamp Timestamp to add - * @return Zend_Date Provides fluid interface + * @return Zend_Date Provides a fluent interface * @throws Zend_Date_Exception */ public function addTimestamp($timestamp) @@ -378,7 +378,7 @@ * Subtracts a timestamp * * @param integer|string|array|Zend_Date $timestamp Timestamp to sub - * @return Zend_Date Provides fluid interface + * @return Zend_Date Provides a fluent interface * @throws Zend_Date_Exception */ public function subTimestamp($timestamp) @@ -1063,7 +1063,7 @@ * @param string|integer|array|Zend_Date $date Date or datepart to set * @param string $part OPTIONAL Part of the date to set, if null the timestamp is set * @param string|Zend_Locale $locale OPTIONAL Locale for parsing input - * @return Zend_Date Provides fluid interface + * @return Zend_Date Provides a fluent interface * @throws Zend_Date_Exception */ public function set($date, $part = null, $locale = null) @@ -1091,7 +1091,7 @@ * @param string|integer|array|Zend_Date $date Date or datepart to add * @param string $part OPTIONAL Part of the date to add, if null the timestamp is added * @param string|Zend_Locale $locale OPTIONAL Locale for parsing input - * @return Zend_Date Provides fluid interface + * @return Zend_Date Provides a fluent interface * @throws Zend_Date_Exception */ public function add($date, $part = self::TIMESTAMP, $locale = null) @@ -1114,7 +1114,7 @@ * @param string|integer|array|Zend_Date $date Date or datepart to subtract * @param string $part OPTIONAL Part of the date to sub, if null the timestamp is subtracted * @param string|Zend_Locale $locale OPTIONAL Locale for parsing input - * @return Zend_Date Provides fluid interface + * @return Zend_Date Provides a fluent interface * @throws Zend_Date_Exception */ public function sub($date, $part = self::TIMESTAMP, $locale = null) @@ -1208,7 +1208,7 @@ return $zone; } - preg_match('/([[:alpha:]\/]{3,30})(?!.*([[:alpha:]\/]{3,30}))/', $zone, $match); + preg_match('/([[:alpha:]\/_]{3,30})(?!.*([[:alpha:]\/]{3,30}))/', $zone, $match); try { if (!empty($match) and (!is_int($match[count($match) - 1]))) { $oldzone = $this->getTimezone(); @@ -2067,9 +2067,18 @@ } // (T)hh:mm:ss preg_match('/[T,\s]{0,1}(\d{2}):(\d{2}):(\d{2})/', $tmpdate, $timematch); + // (T)hhmmss if (empty($timematch)) { preg_match('/[T,\s]{0,1}(\d{2})(\d{2})(\d{2})/', $tmpdate, $timematch); } + // (T)hh:mm + if (empty($timematch)) { + preg_match('/[T,\s]{0,1}(\d{2}):(\d{2})/', $tmpdate, $timematch); + } + // (T)hhmm + if (empty($timematch)) { + preg_match('/[T,\s]{0,1}(\d{2})(\d{2})/', $tmpdate, $timematch); + } if (empty($datematch) and empty($timematch)) { require_once 'Zend/Date/Exception.php'; throw new Zend_Date_Exception("unsupported ISO8601 format ($date)", 0, null, $date); @@ -2093,6 +2102,9 @@ $timematch[2] = 0; $timematch[3] = 0; } + if (!isset($timematch[3])) { + $timematch[3] = 0; + } if (($calc == 'set') || ($calc == 'cmp')) { --$datematch[2]; @@ -2836,7 +2848,7 @@ * @param string|integer|array|Zend_Date $time Time to set * @param string $format OPTIONAL Timeformat for parsing input * @param string|Zend_Locale $locale OPTIONAL Locale for parsing input - * @return Zend_Date Provides fluid interface + * @return Zend_Date Provides a fluent interface * @throws Zend_Date_Exception */ public function setTime($time, $format = null, $locale = null) @@ -2854,7 +2866,7 @@ * @param string|integer|array|Zend_Date $time Time to add * @param string $format OPTIONAL Timeformat for parsing input * @param string|Zend_Locale $locale OPTIONAL Locale for parsing input - * @return Zend_Date Provides fluid interface + * @return Zend_Date Provides a fluent interface * @throws Zend_Date_Exception */ public function addTime($time, $format = null, $locale = null) @@ -2872,7 +2884,7 @@ * @param string|integer|array|Zend_Date $time Time to sub * @param string $format OPTIONAL Timeformat for parsing input * @param string|Zend_Locale $locale OPTIONAL Locale for parsing input - * @return Zend_Date Provides fluid inteface + * @return Zend_Date Provides a fluent inteface * @throws Zend_Date_Exception */ public function subTime($time, $format = null, $locale = null) @@ -2998,7 +3010,7 @@ * @param string|integer|array|Zend_Date $date Date to set * @param string $format OPTIONAL Date format for parsing * @param string|Zend_Locale $locale OPTIONAL Locale for parsing input - * @return Zend_Date Provides fluid interface + * @return Zend_Date Provides a fluent interface * @throws Zend_Date_Exception */ public function setDate($date, $format = null, $locale = null) @@ -3016,7 +3028,7 @@ * @param string|integer|array|Zend_Date $date Date to add * @param string $format OPTIONAL Date format for parsing input * @param string|Zend_Locale $locale OPTIONAL Locale for parsing input - * @return Zend_Date Provides fluid interface + * @return Zend_Date Provides a fluent interface * @throws Zend_Date_Exception */ public function addDate($date, $format = null, $locale = null) @@ -3035,7 +3047,7 @@ * @param string|integer|array|Zend_Date $date Date to sub * @param string $format OPTIONAL Date format for parsing input * @param string|Zend_Locale $locale OPTIONAL Locale for parsing input - * @return Zend_Date Provides fluid interface + * @return Zend_Date Provides a fluent interface * @throws Zend_Date_Exception */ public function subDate($date, $format = null, $locale = null) @@ -3086,7 +3098,7 @@ * * @param string|integer|Zend_Date $date ISO Date to set * @param string|Zend_Locale $locale OPTIONAL Locale for parsing input - * @return Zend_Date Provides fluid interface + * @return Zend_Date Provides a fluent interface * @throws Zend_Date_Exception */ public function setIso($date, $locale = null) @@ -3103,7 +3115,7 @@ * * @param string|integer|Zend_Date $date ISO Date to add * @param string|Zend_Locale $locale OPTIONAL Locale for parsing input - * @return Zend_Date Provides fluid interface + * @return Zend_Date Provides a fluent interface * @throws Zend_Date_Exception */ public function addIso($date, $locale = null) @@ -3120,7 +3132,7 @@ * * @param string|integer|Zend_Date $date ISO Date to sub * @param string|Zend_Locale $locale OPTIONAL Locale for parsing input - * @return Zend_Date Provides fluid interface + * @return Zend_Date Provides a fluent interface * @throws Zend_Date_Exception */ public function subIso($date, $locale = null) @@ -3173,7 +3185,7 @@ * * @param string|integer|Zend_Date $date RFC 822 to set * @param string|Zend_Locale $locale OPTIONAL Locale for parsing input - * @return Zend_Date Provides fluid interface + * @return Zend_Date Provides a fluent interface * @throws Zend_Date_Exception */ public function setArpa($date, $locale = null) @@ -3191,7 +3203,7 @@ * * @param string|integer|Zend_Date $date RFC 822 Date to add * @param string|Zend_Locale $locale OPTIONAL Locale for parsing input - * @return Zend_Date Provides fluid interface + * @return Zend_Date Provides a fluent interface * @throws Zend_Date_Exception */ public function addArpa($date, $locale = null) @@ -3209,7 +3221,7 @@ * * @param string|integer|Zend_Date $date RFC 822 Date to sub * @param string|Zend_Locale $locale OPTIONAL Locale for parsing input - * @return Zend_Date Provides fluid interface + * @return Zend_Date Provides a fluent interface * @throws Zend_Date_Exception */ public function subArpa($date, $locale = null) @@ -3235,12 +3247,12 @@ return $this->_calcvalue('cmp', $date, 'arpa', self::RFC_822, $locale); } - /** * Check if location is supported * * @param array $location locations array - * @return $horizon float + * @throws Zend_Date_Exception + * @return float $horizon float */ private function _checkLocation($location) { @@ -3358,11 +3370,11 @@ return $suninfo; } - /** * Check a given year for leap year. * - * @param integer|array|Zend_Date $year Year to check + * @param integer|array|Zend_Date $year Year to check + * @throws Zend_Date_Exception * @return boolean */ public static function checkLeapYear($year) @@ -3458,7 +3470,7 @@ * * @param string $calc Calculation to make * @param string|integer|array|Zend_Date $date Date or Part to calculate - * @param string $part Datepart for Calculation + * @param string $type Datepart for Calculation * @param string|Zend_Locale $locale Locale for parsing input * @return integer|string new date * @throws Zend_Date_Exception @@ -3496,11 +3508,13 @@ /** * Internal calculation, returns the requested date type * - * @param string $calc Calculation to make - * @param string|integer|Zend_Date $value Datevalue to calculate with, if null the actual value is taken - * @param string|Zend_Locale $locale Locale for parsing input + * @param string $calc Calculation to make + * @param string|integer|Zend_Date $value Datevalue to calculate with, if null the actual value is taken + * @param string $type + * @param string $parameter + * @param string|Zend_Locale $locale Locale for parsing input + * @throws Zend_Date_Exception * @return integer|Zend_Date new date - * @throws Zend_Date_Exception */ private function _calcvalue($calc, $value, $type, $parameter, $locale) { @@ -3556,9 +3570,9 @@ * use set() instead. * Returned is the new date object * - * @param string|integer|array|Zend_Date $date Year to set + * @param string|integer|array|Zend_Date $year Year to set * @param string|Zend_Locale $locale OPTIONAL Locale for parsing input - * @return Zend_Date Provides fluid interface + * @return Zend_Date Provides a fluent interface * @throws Zend_Date_Exception */ public function setYear($year, $locale = null) @@ -3575,9 +3589,9 @@ * use add() instead. * Returned is the new date object * - * @param string|integer|array|Zend_Date $date Year to add + * @param string|integer|array|Zend_Date $year Year to add * @param string|Zend_Locale $locale OPTIONAL Locale for parsing input - * @return Zend_Date Provides fluid interface + * @return Zend_Date Provides a fluent interface * @throws Zend_Date_Exception */ public function addYear($year, $locale = null) @@ -3594,9 +3608,9 @@ * use sub() instead. * Returned is the new date object * - * @param string|integer|array|Zend_Date $date Year to sub + * @param string|integer|array|Zend_Date $year Year to sub * @param string|Zend_Locale $locale OPTIONAL Locale for parsing input - * @return Zend_Date Provides fluid interface + * @return Zend_Date Provides a fluent interface * @throws Zend_Date_Exception */ public function subYear($year, $locale = null) @@ -3720,7 +3734,7 @@ * * @param string|integer|array|Zend_Date $month Month to set * @param string|Zend_Locale $locale OPTIONAL Locale for parsing input - * @return Zend_Date Provides fluid interface + * @return Zend_Date Provides a fluent interface * @throws Zend_Date_Exception */ public function setMonth($month, $locale = null) @@ -3739,7 +3753,7 @@ * * @param string|integer|array|Zend_Date $month Month to add * @param string|Zend_Locale $locale OPTIONAL Locale for parsing input - * @return Zend_Date Provides fluid interface + * @return Zend_Date Provides a fluent interface * @throws Zend_Date_Exception */ public function addMonth($month, $locale = null) @@ -3758,7 +3772,7 @@ * * @param string|integer|array|Zend_Date $month Month to sub * @param string|Zend_Locale $locale OPTIONAL Locale for parsing input - * @return Zend_Date Provides fluid interface + * @return Zend_Date Provides a fluent interface * @throws Zend_Date_Exception */ public function subMonth($month, $locale = null) @@ -3795,13 +3809,13 @@ return $this->copyPart(self::DAY_SHORT, $locale); } - /** * Returns the calculated day * - * @param string $calc Type of calculation to make - * @param Zend_Date $day Day to calculate, when null the actual day is calculated - * @param Zend_Locale $locale Locale for parsing input + * @param string $calc Type of calculation to make + * @param Zend_Date $day Day to calculate, when null the actual day is calculated + * @param Zend_Locale $locale Locale for parsing input + * @throws Zend_Date_Exception * @return Zend_Date|integer */ private function _day($calc, $day, $locale) @@ -3862,9 +3876,9 @@ * Returned is the new date object * Example: setDay('Montag', 'de_AT'); will set the monday of this week as day. * - * @param string|integer|array|Zend_Date $month Day to set + * @param string|integer|array|Zend_Date $day Day to set * @param string|Zend_Locale $locale OPTIONAL Locale for parsing input - * @return Zend_Date Provides fluid interface + * @return Zend_Date Provides a fluent interface * @throws Zend_Date_Exception */ public function setDay($day, $locale = null) @@ -3880,9 +3894,9 @@ * If a localized dayname is given it will be parsed with the default locale or the optional * set locale. * - * @param string|integer|array|Zend_Date $month Day to add + * @param string|integer|array|Zend_Date $day Day to add * @param string|Zend_Locale $locale OPTIONAL Locale for parsing input - * @return Zend_Date Provides fluid interface + * @return Zend_Date Provides a fluent interface * @throws Zend_Date_Exception */ public function addDay($day, $locale = null) @@ -3898,9 +3912,9 @@ * If a localized dayname is given it will be parsed with the default locale or the optional * set locale. * - * @param string|integer|array|Zend_Date $month Day to sub + * @param string|integer|array|Zend_Date $day Day to sub * @param string|Zend_Locale $locale OPTIONAL Locale for parsing input - * @return Zend_Date Provides fluid interface + * @return Zend_Date Provides a fluent interface * @throws Zend_Date_Exception */ public function subDay($day, $locale = null) @@ -4010,9 +4024,9 @@ * Returned is the new date object. * Example: setWeekday(3); will set the wednesday of this week as day. * - * @param string|integer|array|Zend_Date $month Weekday to set + * @param string|integer|array|Zend_Date $weekday Weekday to set * @param string|Zend_Locale $locale OPTIONAL Locale for parsing input - * @return Zend_Date Provides fluid interface + * @return Zend_Date Provides a fluent interface * @throws Zend_Date_Exception */ public function setWeekday($weekday, $locale = null) @@ -4030,9 +4044,9 @@ * Example: addWeekday(3); will add the difference of days from the begining of the month until * wednesday. * - * @param string|integer|array|Zend_Date $month Weekday to add + * @param string|integer|array|Zend_Date $weekday Weekday to add * @param string|Zend_Locale $locale OPTIONAL Locale for parsing input - * @return Zend_Date Provides fluid interface + * @return Zend_Date Provides a fluent interface * @throws Zend_Date_Exception */ public function addWeekday($weekday, $locale = null) @@ -4050,9 +4064,9 @@ * Example: subWeekday(3); will subtract the difference of days from the begining of the month until * wednesday. * - * @param string|integer|array|Zend_Date $month Weekday to sub + * @param string|integer|array|Zend_Date $weekday Weekday to sub * @param string|Zend_Locale $locale OPTIONAL Locale for parsing input - * @return Zend_Date Provides fluid interface + * @return Zend_Date Provides a fluent interface * @throws Zend_Date_Exception */ public function subWeekday($weekday, $locale = null) @@ -4104,7 +4118,7 @@ * * @param string|integer|array|Zend_Date $day Day of Year to set * @param string|Zend_Locale $locale OPTIONAL Locale for parsing input - * @return Zend_Date Provides fluid interface + * @return Zend_Date Provides a fluent interface * @throws Zend_Date_Exception */ public function setDayOfYear($day, $locale = null) @@ -4121,7 +4135,7 @@ * * @param string|integer|array|Zend_Date $day Day of Year to add * @param string|Zend_Locale $locale OPTIONAL Locale for parsing input - * @return Zend_Date Provides fluid interface + * @return Zend_Date Provides a fluent interface * @throws Zend_Date_Exception */ public function addDayOfYear($day, $locale = null) @@ -4138,7 +4152,7 @@ * * @param string|integer|array|Zend_Date $day Day of Year to sub * @param string|Zend_Locale $locale OPTIONAL Locale for parsing input - * @return Zend_Date Provides fluid interface + * @return Zend_Date Provides a fluent interface * @throws Zend_Date_Exception */ public function subDayOfYear($day, $locale = null) @@ -4184,7 +4198,7 @@ * * @param string|integer|array|Zend_Date $hour Hour to set * @param string|Zend_Locale $locale OPTIONAL Locale for parsing input - * @return Zend_Date Provides fluid interface + * @return Zend_Date Provides a fluent interface * @throws Zend_Date_Exception */ public function setHour($hour, $locale = null) @@ -4201,7 +4215,7 @@ * * @param string|integer|array|Zend_Date $hour Hour to add * @param string|Zend_Locale $locale OPTIONAL Locale for parsing input - * @return Zend_Date Provides fluid interface + * @return Zend_Date Provides a fluent interface * @throws Zend_Date_Exception */ public function addHour($hour, $locale = null) @@ -4218,7 +4232,7 @@ * * @param string|integer|array|Zend_Date $hour Hour to sub * @param string|Zend_Locale $locale OPTIONAL Locale for parsing input - * @return Zend_Date Provides fluid interface + * @return Zend_Date Provides a fluent interface * @throws Zend_Date_Exception */ public function subHour($hour, $locale = null) @@ -4270,7 +4284,7 @@ * * @param string|integer|array|Zend_Date $minute Minute to set * @param string|Zend_Locale $locale OPTIONAL Locale for parsing input - * @return Zend_Date Provides fluid interface + * @return Zend_Date Provides a fluent interface * @throws Zend_Date_Exception */ public function setMinute($minute, $locale = null) @@ -4287,7 +4301,7 @@ * * @param string|integer|array|Zend_Date $minute Minute to add * @param string|Zend_Locale $locale OPTIONAL Locale for parsing input - * @return Zend_Date Provides fluid interface + * @return Zend_Date Provides a fluent interface * @throws Zend_Date_Exception */ public function addMinute($minute, $locale = null) @@ -4304,7 +4318,7 @@ * * @param string|integer|array|Zend_Date $minute Minute to sub * @param string|Zend_Locale $locale OPTIONAL Locale for parsing input - * @return Zend_Date Provides fluid interface + * @return Zend_Date Provides a fluent interface * @throws Zend_Date_Exception */ public function subMinute($minute, $locale = null) @@ -4356,7 +4370,7 @@ * * @param string|integer|array|Zend_Date $second Second to set * @param string|Zend_Locale $locale (Optional) Locale for parsing input - * @return Zend_Date Provides fluid interface + * @return Zend_Date Provides a fluent interface * @throws Zend_Date_Exception */ public function setSecond($second, $locale = null) @@ -4373,7 +4387,7 @@ * * @param string|integer|array|Zend_Date $second Second to add * @param string|Zend_Locale $locale (Optional) Locale for parsing input - * @return Zend_Date Provides fluid interface + * @return Zend_Date Provides a fluent interface * @throws Zend_Date_Exception */ public function addSecond($second, $locale = null) @@ -4390,7 +4404,7 @@ * * @param string|integer|array|Zend_Date $second Second to sub * @param string|Zend_Locale $locale (Optional) Locale for parsing input - * @return Zend_Date Provides fluid interface + * @return Zend_Date Provides a fluent interface * @throws Zend_Date_Exception */ public function subSecond($second, $locale = null) @@ -4431,7 +4445,7 @@ * * @param integer $precision Precision for the fractional datepart 3 = milliseconds * @throws Zend_Date_Exception - * @return Zend_Date Provides fluid interface + * @return Zend_Date Provides a fluent interface */ public function setFractionalPrecision($precision) { @@ -4461,14 +4475,14 @@ return $this->_fractional; } - /** * Sets new milliseconds for the date object * Example: setMilliSecond(550, 2) -> equals +5 Sec +50 MilliSec * * @param integer|Zend_Date $milli (Optional) Millisecond to set, when null the actual millisecond is set * @param integer $precision (Optional) Fraction precision of the given milliseconds - * @return Zend_Date Provides fluid interface + * @throws Zend_Date_Exception + * @return Zend_Date Provides a fluent interface */ public function setMilliSecond($milli = null, $precision = null) { @@ -4495,13 +4509,13 @@ return $this; } - /** * Adds milliseconds to the date object * * @param integer|Zend_Date $milli (Optional) Millisecond to add, when null the actual millisecond is added * @param integer $precision (Optional) Fractional precision for the given milliseconds - * @return Zend_Date Provides fluid interface + * @throws Zend_Date_Exception + * @return Zend_Date Provides a fluent interface */ public function addMilliSecond($milli = null, $precision = null) { @@ -4514,15 +4528,24 @@ } if ($precision === null) { - $precision = strlen($milli); - if ($milli < 0) { - --$precision; - } + // Use internal default precision + // Is not as logic as using the length of the input. But this would break tests and maybe other things + // as an input value of integer 10, which is used in tests, must be parsed as 10 milliseconds (real milliseconds, precision 3) + // but with auto-detect of precision, 100 milliseconds would be added. + $precision = $this->_precision; } if (!is_int($precision) || $precision < 1 || $precision > 9) { require_once 'Zend/Date/Exception.php'; - throw new Zend_Date_Exception("precision ($precision) must be a positive integer less than 10", 0, null, $precision); + throw new Zend_Date_Exception( + "precision ($precision) must be a positive integer less than 10", 0, null, $precision + ); + } + + if ($this->_precision > $precision) { + $milli = $milli * pow(10, $this->_precision - $precision); + } elseif ($this->_precision < $precision) { + $milli = round($milli / pow(10, $precision - $this->_precision)); } $this->_fractional += $milli; @@ -4557,7 +4580,7 @@ * * @param integer|Zend_Date $milli (Optional) Millisecond to sub, when null the actual millisecond is subtracted * @param integer $precision (Optional) Fractional precision for the given milliseconds - * @return Zend_Date Provides fluid interface + * @return Zend_Date Provides a fluent interface */ public function subMilliSecond($milli = null, $precision = null) { @@ -4639,7 +4662,7 @@ * * @param string|integer|array|Zend_Date $week Week to set * @param string|Zend_Locale $locale OPTIONAL Locale for parsing input - * @return Zend_Date Provides fluid interface + * @return Zend_Date Provides a fluent interface * @throws Zend_Date_Exception */ public function setWeek($week, $locale = null) @@ -4654,7 +4677,7 @@ * * @param string|integer|array|Zend_Date $week Week to add * @param string|Zend_Locale $locale OPTIONAL Locale for parsing input - * @return Zend_Date Provides fluid interface + * @return Zend_Date Provides a fluent interface * @throws Zend_Date_Exception */ public function addWeek($week, $locale = null) @@ -4669,7 +4692,7 @@ * * @param string|integer|array|Zend_Date $week Week to sub * @param string|Zend_Locale $locale OPTIONAL Locale for parsing input - * @return Zend_Date Provides fluid interface + * @return Zend_Date Provides a fluent interface * @throws Zend_Date_Exception */ public function subWeek($week, $locale = null)