Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在将时间戳转换为日期时间并返回后-差异来自何处?_Php_Mysql_Datetime_Timestamp - Fatal编程技术网

Php 在将时间戳转换为日期时间并返回后-差异来自何处?

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:

因为在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: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))
        ^-----^---