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

这个问题在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类 ]

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值