【原创】当日期小于1970年或者大于2038年时,使用date()处理会报错,如何解决?
问题背景:
现想获取某天是星期几?考虑使用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 )原创,转载请保留文章出处。
发表评论: