<?php
php5.1.开始,php.ini里加入了date.timezone这个选项,默认情况下是关闭
关闭时显示的时间(无论用什么php命令)都是格林威治标准时间,和北京时间正好差8个小时。
date_default_timezone_set("PRC");
// date_default_timezone_set("Asia/Shanghai");
当前时间戳
$now0 = time();
改成年月日 时分秒
var_dump($now0); #int(1530086922)
要使用date函数,要在php.ini文件晨设置时区,或者在代码里调用date_default_timezone_set
// date.timezone 'Asia/Shanghai';
now1 = date("Y-m-d h:i:s",now0);
var_dump(now1); #string(19) "2018-06-27 04:08:42"now2 = date("Y-m-d H:i:s",now0); var_dump(now2); #string(19) "2018-06-27 04:08:42"
年月日 时分秒改成时间戳
now3 = strtotime(now1); #如果给出的strtime格式不合理,则反回false
var_dump($now3); #string(19) "2018-06-27 04:08:42"
PHP5.2版本之后提供了一个函数DateTime可以临时解决一下Y2K38漏洞问题。
// 1、日期字符串转换为时间戳
obj = new DateTime("2050-12-31 23:59:59"); echoobj->format("U"); // 2556115199
// 2、时间戳转换为日期字符串
obj = new DateTime("@2556115199"); // 这里时间戳前要写一个@符号timezone = timezone_open('Asia/HONG_KONG'); // 设置时区
obj->setTimezone(timezone);
echo $obj->format("Y-m-d H:i:s"); // 2050-12-31 23:59:59
// 而且DateTime还可以有其他玩法
obj = new DateTime("2050-12-31 23:59:59"); echoobj->format("Y/m/d H:i:s"); // 换种方式输入时间字符串2050/12/31 23:59:59
通过DateTime类来操作日期不会受到Y2K38漏洞的影响,可以最远支持到9999 年12月31日