time() date() gmdate() strtotime() 和时区的关系

$time = time();
$str1 = date('Y-m-d H:i:s', $time);
$str2 = gmdate('D, d M Y H:i:s T', $time);
$time1 = strtotime($str1);
$time2 = strtotime($str2);

结果:

// $str1
2018-04-11 11:19:49
// $str2
Wed, 11 Apr 2018 03:19:49 GMT

// $time1
1523416789
// $time2
1523416789


结论:

time() 函数得到的是国际标准时间GMT标准的时间戳

gmdate() 函数就是不加任何时区差异的转换成GMT格式的日期

date() 函数则会按php设置的时区timezone 去自动填补时区差异,可以看到date() 函数得到的日期时间晚了8个小时,即转化为本地时间

strtotime() 函数则比较有意思,他会根据字符串特征进行时间戳转换,如果只是普通的 Y-m-d H:i:s ,他会计算时区差异,而如果你是GMT格式的字符串,它能识别,并不考虑时区差异,直接转换

或者换种说法:strtotime() 是不带时区特征的普通字符串,他会使用date() 函数的相反逻辑去处理,而如果是GMT特征的字符串,他则会使用gmdate() 函数相反的逻辑,挺有意思

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值