Php 在将时间戳转换为日期时间并返回后-差异来自何处?
因为在mysql中使用时间戳会带来更好的性能,所以我想在数据库中将时间作为时间戳保存。我收到一个日期时间字符串,如下所示:2014-09-24 17:18:27,用Php 在将时间戳转换为日期时间并返回后-差异来自何处?,php,mysql,datetime,timestamp,Php,Mysql,Datetime,Timestamp,因为在mysql中使用时间戳会带来更好的性能,所以我想在数据库中将时间作为时间戳保存。我收到一个日期时间字符串,如下所示:2014-09-24 17:18:27,用strotime(\u上面的日期)将其转换为时间戳,只是为了好玩,我用date(“Y-m-d H:m:s”,strotime(\u上面的日期))将其转换回来。 I var_转储了进程: string(19) "2014-09-24 17:18:27" int(1411579107) string(19) "2014-09-24 17:
strotime(\u上面的日期)将其转换为时间戳,只是为了好玩,我用date(“Y-m-d H:m:s”,strotime(\u上面的日期))将其转换回来。
I var_转储了进程:
string(19) "2014-09-24 17:18:27"
int(1411579107)
string(19) "2014-09-24 17:09:27"
字符串转换期间发生了什么错误?是什么造成了这种差异?这是相同的秒数,但9分钟的差异是奇怪的 您需要像这样将其转换回:
date("Y-m-d H:i:s", strtotime($the_date_from_above))
按您的方式转换时,H:m:s
中的m
将被视为月份
更好的方法是使用datetime类:
$date = new DateTime();
$date = $date->setTimestamp($yourtimestamp);
echo $date->format("Y-m-d H:i:s");
您使用m
两次,这是月份值。分钟实际上是i
您只是使用了错误的日期时间模板“Y-m-dh:m:s”应该是“Y-m-dh:i:s”。小错误
但我不明白的是你这样做的理由。因为MySql有正确的列类型来保存日期时间值,类型timestamp通常用于其他目的
为了获得更好的性能和精度,若要在下一次计算中使用该值,可以将该值作为字符串保存在数据库中。(表示时间戳,单位为毫秒)尝试使用此日期(“Y-m-d H:i:s”,strotime($上面的日期)日期格式“m”表示月份。使用“i”一分钟。很好地理解了m
和i
直接使用MySQL更好:),因为他的日期格式不需要转换。
date("Y-m-d H:m:s", strtotime($the_date_from_above))
^-----^---