2012-04-11 88 views
-1

如何将 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时间戳,所以我可以用“很久以前”功能,我发现。

我的测试显示,

数据库输入 - > 2012-04-11 13时22分05秒将其转化为 - > 1334143355 - >但是,从当前时间(时间())是 - > 1334146956

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

+5

你的第二个例子不工作的方式是什么? [看起来很完美](http://codepad.viper-7.com/BpLNII)。 – 2012-04-11 12:08:33

+0

什么不起作用?你有错误吗? – liquorvicar 2012-04-11 12:08:44

+0

你也可以在MySQL中使用['UNIX_TIMESTAMP()'](http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_unix-timestamp)功能。 – 2012-04-11 12:10:54

回答

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`; 
+0

完美,谢谢:) – Harry 2012-04-11 12:43:53

+0

还要确保PHP和MySQL都有相同的时区/偏移量设置。也值得研究新的DateTime类,因为它可以为你处理时区/偏移量。 – liquorvicar 2012-04-11 12:45:00

+0

@liquorvicar:如果您使用** all ** MySQL或** all ** PHP,那么PHP和MySQL是否具有相同的时区并不重要。对? – Travesty3 2012-04-11 12:49:46

4

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

您的声明之后做一个

echo $time; 

1

我希望区别是来自不同的时区。预期结果差异大约为+1小时。您需要更具体地说明您想要什么时间 - 例如您是从您的时区或从UTC开始记录/检索时间。

0

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

相关问题