PHP_关于php时间戳最大支持到2038年问题解决办法

来源:互联网 发布:手机老是显示网络异常 编辑:程序博客网 时间:2024/05/21 08:13

这个问题在64位系统中并不存在,因为是在32位系统中,以秒计算php只支持到 2147483648(2^31,到 2038-01-19 03:14:08)

Note:

有效的时间戳通常从 Fri, 13 Dec 1901 20:45:54 GMT 到 Tue, 19 Jan 2038 03:14:07 GMT(对应于 32 位有符号整数的最小值和最大值)。不是所有的平台都支持负的时间戳,那么日记范围就被限制为不能早于 Unix 纪元。这意味着在 1970 年 1 月 1 日之前的日期将不能用在 Windows,一些 Linux 版本,以及几个其它的操作系统中。不过 PHP 5.1.0 及更新的版本克服了此限制。 —— [ PHP手册 ]

如果在32系统PHP 5.1.0之后的版本,可以使用new DateTime解决:

例如:

/*可替换传统date函数*/$utc_value = 2247484647$curformat = 'Y-m-d';function newDate($curformat, $utc_value){    while(1)    {        if($utc_value>2147483647)        {            if(date('Y', $utc_value)<2038)            {                $mydate2 = new DateTime('@'.$utcValue);                $string = $mydate2->format($curformat);                break;            }        }        $string = date($curformat, $utc_value);        break;    }    return $string;}
/*可替换传统strtotime函数*/$str_time = '2100-10-02';function newStrToTime($str_time){    $result = strtotime($str_time);    if(empty($result))    {        $date = new DateTime($str_time);        $result = $date->format('U');    }    return $result;}

具体DateTime类使用方法请详查 -[ PHP手册-DateTime类 ]

0 0
原创粉丝点击