2011-10-07 199 views
1

在这个奇怪的错误只是偶然与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 

回答

2

既然你没有指定时区为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'); 
+0

该死的,我以为它都会使用同一来源的设置。你知道我是否可以全局定义DateTime的默认值(在instanciating之前)? – Anonymous

+0

@danontheline:manual说php *应该*使用默认的时区,但实际上在我的PHP 5.2中是不正确的。它可能已经被固定在5.3 – zerkms