PHP DateTime类解决1970年前和2038年后Unix时间戳与日期互转

2019-5-16 Stone PHP

解决基于32位系统关于1970年前和2038年后时间戳溢出的问题。

<?php
//1970年以前和2038年以后的Unix时间戳转日期
function unixtime_to_date($unixtime, $timezone = 'PRC') {
  $datetime = new DateTime("@$unixtime"); //DateTime类的bug,加入@可以将Unix时间戳作为参数传入
  $datetime->setTimezone(new DateTimeZone($timezone));
  return $datetime->format("Y-m-d H:i:s");
}

//1970年以前和2038年以后的日期转Unix时间戳 
function date_to_unixtime($date, $timezone = 'PRC') {
  $datetime= new DateTime($date, new DateTimeZone($timezone));
  return $datetime->format('U');
} 

echo date_to_unixtime("2038-3-05 00:00:00"); 
echo '<br>';

echo unixtime_to_date(date_to_unixtime('2038-03-06 00:00:00'));

标签: php DateTime 1970年前和2038年后

评论(0) 浏览(954)

Copyright © 2019 by 海角孤星 京ICP备15056837号-1