我很高兴在我的开发机器上使用strtotime()来解析其中一些在19世纪的日期,在16世纪是一个极端的例子。
但我的开发机器是64位,服务器是32位。在星期五,1901年12月13日20:45:54 UTC之前的任何日期的32位机器超出范围(参见strtotime的注释)。
我很乐意为此编写一些自定义代码,但我想我会问是否有任何内置函数可以管理它。日期为ISO 8601格式。
对于它的价值,服务器是使用php 5.2.10的centos 5.4
答案 0 :(得分:3)
1901-12-12T05:00:00Z例如
我现在无法测试,但DateTime
's constructor 可能能够接受您的格式而无需createFromFormat
。我无法从文档中说出来。
尝试
try {
$date = new DateTime('1901-12-12T05:00:00Z');
} catch (Exception $e) {
echo "Arggh! ".$e->getMessage();
die();
}
echo $date->format('Y-m-d H:i:s');
看看会发生什么,特别注意它是否正确理解Z
(即使其成为UTC时间)。
DateTime
在任何系统上内部使用64位数字,并且没有范围限制。
如上所述,从5.3开始,您将能够使用createFromFormat
来解析由date()
个占位符之一表示的任何日期。这是最佳方式,因为您强制它解析特定模式,而不是猜测它。