编程语言
首页 > 编程语言> > PHP 1901年12月13日之前的日期的32位日期解析

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