因为使用时间戳可以在mysql中获得更好的性能,所以我希望将时间保存为数据库中的时间戳。我收到这样的日期时间字符串:2014-09-24 17:18:27,将其转换为strtotime($the_date_from_above)
的时间戳,只是为了好玩,我将其转换回date("Y-m-d H:m:s", strtotime($the_date_from_above))
我var_dumped过程:
string(19) "2014-09-24 17:18:27"
int(1411579107)
string(19) "2014-09-24 17:09:27"
字符串转换期间出了什么问题?是什么导致了这种差异?这是相同的秒数,但9分钟的差异是奇怪的。
答案 0 :(得分:7)
您需要将其转换回来:
date("Y-m-d H:i:s", strtotime($the_date_from_above))
当您按照自己的方式对其进行转换时,m
中的H:m:s
会被视为月份。
更好的是使用datetime类:
$date = new DateTime();
$date = $date->setTimestamp($yourtimestamp);
echo $date->format("Y-m-d H:i:s");
答案 1 :(得分:1)
date("Y-m-d H:m:s", strtotime($the_date_from_above))
^-----^---
你使用m
两次,这是MONTHS值。分钟实际上是i
。
答案 2 :(得分:0)
您只需使用错误的日期时间模板" Y-m-d H:m:s"应该是" Y-m-d H:i:s"。小错误。
但我不明白的是你这样做的理由。因为MySql具有用于保存日期时间值的正确列类型,并且类型时间戳通常用于其他目的。
为了获得更好的性能和精度,如果要将值用于下一次计算,可以将数据库中的值保存为字符串。 (表示带有毫秒的时间戳)