【原创】当日期小于1970年或者大于2038年时,使用date()处理会报错,如何解决?

blogdaren 2019-09-03 抢沙发 47人次

问题背景:

现想获取某天是星期几?考虑使用PHP内置的date()函数,然不幸的是, 当日期小于1970年或者大于2038年时,使用date()处理会报错,这个问题其实和语言无关,和平台有关,仅对于32位机器而言会出错,俗称 Y2K38 漏洞 具体自己百科下

解决方案-1:

采用PHP内置的 DateTime 类处理,代码如下:

function transferUnixtime2Date($unixtime, $timezone = 'PRC') 
{
    $datetime = new DateTime("@$unixtime"); 
    $datetime->setTimezone(new DateTimeZone($timezone));
    
    return $datetime->format("Y-m-d H:i:s");
}

function transferDate2Unixtime($date, $timezone = 'PRC') 
{
    $datetime = new DateTime($date, new DateTimeZone($timezone));

    return $datetime->format('U');
}

解决方案-2:

采用第三方的开源库: https://github.com/fightbulc/moment.php 

版权声明:除非注明,本文由( blogdaren )原创,转载请保留文章出处。

本文链接:【原创】当日期小于1970年或者大于2038年时,使用date()处理会报错,如何解决?

发表评论:

您的昵称:
电子邮件:
个人主页: