我需要一些帮助来寻找服务器或php的任何可能的错误配置,因为我有一个DateTime的"setDate"方法的奇怪行为:
$datetime = new DateTime('2016-01-01 23:59:59');
$datetime->setDate(2016, 2, 28);
print_r($datetime);
/*
DateTime Object
(
[date] => 2016-01-28 23:59:59
[timezone_type] => 3
[timezone] => Europe/Berlin
)
date should actually be february!
*/
Run Code Online (Sandbox Code Playgroud)
好吧,至少它是一致的,因为,当我将日期设定为3月(3)时,结果是2月(2).
$datetime = new DateTime('2016-01-01 23:59:59');
$datetime->setDate(2016, 3, 28);
print_r($datetime);
/*
DateTime Object
(
[date] => 2016-02-28 23:59:59
[timezone_type] => 3
[timezone] => Europe/Berlin
)
date should actually be march!
*/
Run Code Online (Sandbox Code Playgroud)
在PHP中设置默认时区
// "Europe/Berlin"
echo date_default_timezone_get();
Run Code Online (Sandbox Code Playgroud)
服务器当前正在运行
php version 5.3.2 (unfortunately i cannot upgrade)
Run Code Online (Sandbox Code Playgroud)
服务器时间准确设置,时区也是欧洲/柏林.
有人可以帮助我/建议我能做什么或检查其他吗?
至于奇怪的行为,我找到了一个奇怪的解决方法。我认为并希望其他人不会收到此错误(请参阅问题的答案),但以防万一:
您需要将 DateTime-Class 重新实例化为变量。请不要问我为什么!F-,-
$datetime = new DateTime();
$datetime = new DateTime('2016-01-01 23:59:59');
$datetime->setDate(2016, 2, 28);
print_r($datetime);
/*
DateTime Object
(
[date] => 2016-02-28 23:59:59
[timezone_type] => 3
[timezone] => Europe/Berlin
)
*/
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
76 次 |
| 最近记录: |