[英]php strtotime() function returns blank/0
我有字符串格式的日期时间数据,如下所示:
Sat Mar 24 23:59:59 GMT 2012
我想将其转换为UTC时间戳,但是当我按如下方式尝试时:
function texttotime($texttime)
{
if(!$texttime || $texttime=="")
return NULL;
// Sat Mar 24 23:59:59 GMT 2012
$bits = preg_split('/\s/', $texttime);
// Mar 24 2012 23:59:59 GMT
return strtotime("$bits[1] $bits[2] $bits[5] $bits[3] bits[4]");
}
它输出0(非NULL)。
如果我将最后一行更改为:
// Mar 24 2012 23:59:59
return strtotime("$bits[1] $bits[2] $bits[5] $bits[3]");
它输出一些东西(但错误的时间戳,关闭-4小时左右)。
不太确定为什么你要重新组织现有的字符串,因为......
echo $timestamp = strtotime('Sat Mar 24 23:59:59 GMT 2012');
...工作正常。 (它返回1332633599,您可以通过date('r', 1332633599);
检查date('r', 1332633599);
(这将导致“星期六,2012年3月24日23:59:59 +0000”,所以一切都很好。)
也就是说,如果要提取字符串的所有组件,则最好使用mktime 。 例如:
function texttotime($texttime) {
if(!$texttime || $texttime=="") return NULL;
list($junk, $month, $day, $time, $timezone, $year) = explode(' ', $texttime);
list($hour, $minute, $second) = explode(':', $time);
return mktime($hour, $minute, $second, $month, $day, $year);
}
您有4小时差异的原因是服务器时区距格林威治标准时间-4小时。 尝试定义您当前的时区,如下所示:
date_default_timezone_set('Europe/London');
$result = strtotime('Sat Mar 24 23:59:59 GMT 2012');
echo date('r', $result);//Sat, 24 Mar 2012 23:59:59 +0000
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.