我的代码
$time = "Tuesday, 26 June 2012";
//str_replace(',','',$time);<--this also doesn't work.
$a = strptime($time, "%l, %j %F %Y");
$stmp = mktime(0,0,0,$a['tm_mon'],$a['tm_mday'],$a['tm_year'],0);
$from_stmp = date("l, j F Y H:i:s", $stmp);
echo $from_stmp; //Tuesday, 30 November 1999 00:00:00
现在我知道有一种更优雅的方法,它确实有效:
$time = "Tuesday, 26 June 2012";
$stmp = strtotime($time);
$from_stmp = date("l, j F Y H:i:s", $stmp);
echo $from_stmp;//Tuesday, 26 June 2012 00:00:00
但是第一个版本有什么问题呢?我只是好奇。
最佳答案
问题#1
$a = strptime(time, "%l, %j %F %Y");
你写了时间
;它应该是 $time
。
问题#2
您的格式字符串有误。 strptime
没有使用与date
相同的格式字符串,只是在前面加了百分号;它有自己的一套。您的格式字符串应如下所示:
$a = strptime($time, "%A, %e %B %Y");
问题#3
strptime
返回自 1900 年以来的年数。您需要添加1900
。strptime
返回从 0 到 11 的月份。您需要添加1
。
全部总结
这是你的代码,已修复:
<?php
$time = "Tuesday, 26 June 2012";
$a = strptime($time, "%A, %e %B %Y");
$stmp = mktime(0, 0, 0, $a['tm_mon'] + 1, $a['tm_mday'], 1900 + $a['tm_year']);
$from_stmp = date("l, j F Y H:i:s", $stmp);
echo $from_stmp;
?>
关于PHP:为什么将日期字符串转换为时间戳然后再转换回日期字符串不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11180797/