php日期时间对象与Unix时间戳错误 - 错误?
问题描述:
在这个奇怪的错误只是偶然与PHP的DateTime对象...... 检查了这一点:php日期时间对象与Unix时间戳错误 - 错误?
<?php
$date = 1335823200;
echo date('d',$date);
echo '<br />';
$date = new DateTime("@$date");
echo $date->format('d');
?>
返回:
06
05
它不与任何时间戳发生。我怀疑它与不同的时区有关,但是用setlocale()来玩并没有什么帮助。顺便说一下,DateTime中的'@'需要能够使用unix时间戳(请参阅错误报告here)。下面几个时间戳来测试:
1333663200
1338588000
1338847200
答
既然你没有指定时区为DateTime
假设它是UTC
,而date
方面当前时区(由date_default_timezone_set
指定或php.ini
拍摄)。只要执行此操作,请参阅:
$date = 1335823200;
echo date('d-m-Y H:i:s',$date);
echo '<br />';
$date = new DateTime("@$date");
echo $date->format('d-m-Y H:i:s');
该死的,我以为它都会使用同一来源的设置。你知道我是否可以全局定义DateTime的默认值(在instanciating之前)? – Anonymous
@danontheline:manual说php *应该*使用默认的时区,但实际上在我的PHP 5.2中是不正确的。它可能已经被固定在5.3 – zerkms