$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() 函数相反的逻辑,挺有意思