好的,所以我在PHP中有Y-m-d H:i:s
格式的日期时间字符串。例如:
'2013-07-01 00:04:37'
另外我有一个时区字符串,如:
'-05:00'
我想将这两个字符串转换为整数(unix时间),然后将其存储在MySQL数据库中。你会怎么做?
我知道给定一个字符串,你可以在PHP中获得如下的unix时间:
date_create('2013-07-01 00:04:37')->getTimestamp();
但是你会如何调整它以便它能够解释正确的时区?另外,如何在PHP中存储MySQL中的unix时间戳?
答案 0 :(得分:2)
您可以使用mysql函数CONVERT_TZ()
CONVERT_TZ(dt,from_tz,to_tz)
CONVERT_TZ()将日期时间值dt从from_tz给定的时区转换为to_tz给定的时区,并返回结果值。
示例:
SELECT CONVERT_TZ('2013-07-01 00:04:37','+00:00','-05:00');
这会输出2013-06-30 19:04:37
您可以在 INSERT 语句中使用此功能。
答案 1 :(得分:0)
您可以添加时区;)
类似的东西:
date_create('2013-07-01T00:04:37-05:00')->getTimestamp();
正如您在文档中看到的那样:http://es1.php.net/manual/en/datetime.construct.php
答案 2 :(得分:0)
将时间和日期转换为Unix时间戳时,会将其转换为一个整数,表示自1970年1月1日00:00 UTC以来的秒数。因此,如果您将时区输入到函数中以创建时间戳,它将调整秒数。
然后,您可以将此值保存在MySQL int
列中,因为时间戳是有符号整数。有关详细信息,请参阅How should unix timestamps be stored in int columns?。你可以做点什么
INSERT INTO table (timestamp, content) VALUES ('your timestamp','your content');
将其插入您的表格。