PHP 1901年12月13日之前的日期的32位日期解析
作者:互联网
我很高兴在开发机器上使用strtotime()来解析日期,其中一些是在1800年代,而一个极端的例子是在1500年代.
但是我的开发机器是64位,服务器是32位.在32位计算机上,1901年12月13日星期五之前的任意日期UTC超出范围(请参阅strtotime注释).
我很乐意为此编写一些自定义代码,但以为我会问是否有任何php内置函数可以管理此代码.日期采用ISO 8601格式.
对于什么是值得的服务器是带有PHP 5.2.10的centos 5.4
解决方法:
1901-12-12T05:00:00Z for example
我目前无法对其进行测试,但是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()的占位符之一表示的任何日期.这是最佳方法,因为您强迫它解析特定的模式,而不是猜测它.
标签:32-bit,datetime,php 来源: https://codeday.me/bug/20191208/2092155.html