Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Zend framework Zend_日期:DST变更日的错误结果_Zend Framework_Zend Date - Fatal编程技术网

Zend framework Zend_日期:DST变更日的错误结果

Zend framework Zend_日期:DST变更日的错误结果,zend-framework,zend-date,Zend Framework,Zend Date,“2012年3月25日”是捷克共和国时间从凌晨2:00改为凌晨3:00的日期。在那一天,我网站上的一个功能停止正常工作,一位客户抱怨,等等。在挖掘了几个小时后,我发现Zend_date在那天表现得很奇怪: #!/usr/bin/env php <?php include 'Zend/Date.php'; date_default_timezone_set('Europe/Prague'); shell_exec('sudo date --set="25 Mar 2012 12:00:0

“2012年3月25日”是捷克共和国时间从凌晨2:00改为凌晨3:00的日期。在那一天,我网站上的一个功能停止正常工作,一位客户抱怨,等等。在挖掘了几个小时后,我发现Zend_date在那天表现得很奇怪:

#!/usr/bin/env php
<?php

include 'Zend/Date.php';

date_default_timezone_set('Europe/Prague');
shell_exec('sudo date --set="25 Mar 2012 12:00:00"');

$date = new Zend_Date();
$date->set('00:01:00', Zend_Date::TIMES);
$startDate = $date->get(Zend_Date::TIMESTAMP);
echo 'start date: ' . date("j.n.Y H:i", $startDate) . PHP_EOL;

$date->set('23:59:00', Zend_Date::TIMES);
$endDate = $date->get(Zend_Date::TIMESTAMP);
echo 'end date: ' . date("j.n.Y H:i", $endDate) . PHP_EOL;
白天休息

如果我将日期更改为“2012年3月26日12:00:00”,它将正确输出:

start date: 26.3.2012 00:01
end date: 26.3.2012 23:59

使用mktime而不是Zend_Date在这两种情况下都能正常工作。是Zend_约会中的bug吗?我想是的,所以我已经发布了一个bug报告。但是,也许我遗漏了一些明显的东西?

当测试代码时,只是硬编码日期:
$date=new Zend_date('2012-03-25 4:00:00','YYYY-MM-dd H:MM:ss')结果正常。使用
$date->toString('d.M.yyyy HH:mm')时,尝试查看日期输出是否相同

我刚刚在堆栈溢出上发现了这个问题,它完美地解决了我的问题(与您的问题相同)


祝你好运

我能想到的唯一一件事是,你的系统的时区不是欧洲/布拉格,在这种情况下,PHP将根据欧洲/布拉格和你的系统时区之间的差异重新计算日期/时间。当然,通过执行
echo date('j.n.Y H:i'),这是很容易测试的不过,我肯定不是专家,所以它也可能是Zend_Date中的一个bug(毕竟它是一个野兽般的组件)。
start date: 26.3.2012 00:01
end date: 26.3.2012 23:59