1

我对冬季/夏季时间跨过的日期有疑问。请参阅示例

        $pickUpDate = '2011-10-23';
        $dropOffDate = '2011-10-31';
        $pickUpTime = '09:00';
        $dropOffTime = '09:00';

        Zend_Date::setOptions(array('fix_dst' => false));
        Zend_Date::setOptions(array('fix_dst' => false));
        $pickUpDateTime = new Zend_Date ( $pickUpDate);
        $pickUpDateTime->setTime ( $pickUpTime );
        $dropOffDateTime = new Zend_Date ( $dropOffDate);
        $dropOffDateTime->setTime ( $dropOffTime );


        $dateDiff = ceil(($dropOffDateTime->getTimestamp ( ) - $pickUpDateTime->getTimestamp ( )) / (3600 * 24));
        echo $dateDiff;

Echo 产生 9... 我的时区是伦敦,但我认为 fix_dst 应该解决夏令时问题?我也尝试将时区设置为 GMT 和 UTC,但效果相同吗?有任何想法吗?

4

1 回答 1

0

时间戳没有时区信息。您应该避免在此用例中使用它们。

也许您应该在两个日期之间尝试使用Zend_Date::sub方法。这将照顾 DST。

还请查看您的时区,因为从我从上面的链接中读到的内容:

如果 Zend_Date 实例中的实际时区设置为 UTC 或 GMT,则不会使用选项“fix_dst”,因为这两个时区不适用于 DST。

于 2011-05-30T11:01:46.500 回答