PHP基于DateTime类解决Unix时间戳与日期互转问题【针对1970年前及2038年后时间戳】

百句空言,不如一个行动。凡事回归原点,不懂就不懂,努力学习;懂了也要相信人外有人,放下架子,谦虚,能力提升方可最大化!

本文实例讲述了PHP基于DateTime类解决Unix时间戳与日期互转问题。分享给大家供大家参考,具体如下:

这个问题主要在32位的系统下出现,64位的不存在这样的问题。php 5.2+提供了DateTime类来处理这样的问题,参考方案如下(请注意时区的处理):

//1、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");
}
//2、日期转Unix时间戳
function date_to_unixtime($date, $timezone = 'PRC') {
  $datetime= new DateTime($date, new DateTimeZone($timezone));
  return $datetime->format('U');
}
echo date_to_unixtime("1900-1-31 00:00:00"); //输出-2206425952
echo '<br>';
echo unixtime_to_date(date_to_unixtime("1900-1-31 00:00:00")); //输出1900-01-31 00:00:00

PS:这里再为大家推荐几款时间及日期相关工具供大家参考使用:

在线日期/天数计算器:
http://tools.haodaima.com/jisuanqi/date_jisuanqi

在线日期计算器/相差天数计算器:
http://tools.haodaima.com/jisuanqi/datecalc

在线日期天数差计算器:
http://tools.haodaima.com/jisuanqi/onlinedatejsq

Unix时间戳(timestamp)转换工具:
http://tools.haodaima.com/code/unixtime

希望本文所述对大家PHP程序设计有所帮助。

本文PHP基于DateTime类解决Unix时间戳与日期互转问题【针对1970年前及2038年后时间戳】到此结束。如果你真心选择去做一件事,那么全世界都是帮忙你的。小编再次感谢大家对我们的支持!

您可能有感兴趣的文章
Django中datetime的处理方法(strftime/strptime)

Yii2中datetime类的使用

总结PHP中DateTime的常用方法

PHP性能优化案例分享

PHP实现短信验证码的发送次数限制