如何将日期转换为时间戳

时间:2012-04-11 12:06:16

标签: php mysql timestamp

我怎么转 2012-04-11 12:49:14 成为一个unixtime邮票?

我试过了

$time = mktime("2012-04-11 12:59:14");

$time = strtotime("2012-04-11 12:59:14");

修改 基本上在更新时,我的数据库会添加一个如下所示的日期/时间。

2012-04-11 12:49:14

我需要将它变成一个unix时间戳,这样我才能使用我发现的“time ago”功能。

我的测试显示,

数据库输入 - > 2012-04-11 13:22:05转换成 - > 1334143355 - >但是(时间())的当前时间是 - > 1334146956

我不明白他们为什么不匹配?

4 个答案:

答案 0 :(得分:4)

声明$time = strtotime("2012-04-11 12:59:14");工作得很好。

做一个

echo $time;
宣言后

答案 1 :(得分:2)

这听起来像是时间偏移不匹配的问题(也许是夏令时)。最好用PHP或全部用MySQL来完成,以避免不匹配的时间偏移。

1334146484 - 1334142872 = 3612s = 1h 12s

在插入或检索数据时,您应该使用UNIX_TIMESTAMP,具体取决于您是希望存储为unix时间戳还是日期时间 -

INSERT INTO `table` (date_field) VALUES (UNIX_TIMESTAMP('2012-04-11 12:59:14'));

SELECT UNIX_TIMESTAMP(date_field) FROM `table`;

答案 2 :(得分:1)

我希望区别在于处于不同的时区。差异大约是+1小时形成预期结果。您需要更具体地说明您想要的时间 - 例如您从时区或UTC记录/检索时间。

答案 3 :(得分:0)

$time = strtotime("2012-04-11 12:59:14");是正确的选择。