Zend Date - 日差

Nis*_*mar 9 zend-framework zend-form zend-date

我有以下代码行

$day1 = new Zend_Date('2010-03-01', 'YYYY-mm-dd');
$day2 = new Zend_Date('2010-03-05', 'YYYY-mm-dd');
$dateDiff = $day2->getDate()->get(Zend_Date::TIMESTAMP) - $day1->getDate()->get(Zend_Date::TIMESTAMP);
$days = floor((($dateDiff / 60) / 60) / 24);
return  $days;  
Run Code Online (Sandbox Code Playgroud)

这将返回4

但如果给了

$day1 = new Zend_Date('2010-02-28', 'YYYY-mm-dd');
$day2 = new Zend_Date('2010-03-01', 'YYYY-mm-dd');
$dateDiff = $day2->getDate()->get(Zend_Date::TIMESTAMP) - $day1->getDate()->get(Zend_Date::TIMESTAMP);
$days = floor((($dateDiff / 60) / 60) / 24);
return  $days; 
Run Code Online (Sandbox Code Playgroud)

它将返回-27 ..我将如何得到正确的答案

Nis*_*mar 15

$firstDay = new Zend_Date('2010-02-28', 'YYYY-MM-dd');
$lastDay = new Zend_Date('2010-03-01', 'YYYY-MM-dd');
$diff = $lastDay->sub($firstDay)->toValue();
$days = ceil($diff/60/60/24) +1;
Run Code Online (Sandbox Code Playgroud)

返回$ days;

这给出了正确的答案


Mik*_*ike 7

我相信问题在你的部分字符串中.请尝试使用YYYY-MM-dd.

$day1 = new Zend_Date('2010-02-28', 'YYYY-MM-dd');
$day2 = new Zend_Date('2010-03-01', 'YYYY-MM-dd');
echo $day2->sub($day1)->toString(Zend_Date::DAY);
Run Code Online (Sandbox Code Playgroud)

  • 当心'YYYY'是ISO年份.今年使用'yyyy'. (5认同)
  • 如果差异大于一个月,此代码将无法按预期工作 (5认同)
  • 现在查看日期代码,sub()在结尾返回$ this(这是一个Zend_Date对象).这是zend框架的1.11版本. (2认同)