2

好的,所以我有一个Y-m-d H:i:s格式为 PHP 的日期时间字符串。例如:

'2013-07-01 00:04:37'

此外,我有一个时区字符串,例如:

'-05:00'

我想将这两个字符串转换为整数(unix 时间),然后将其存储在 MySQL 数据库中。你会怎么做?

我知道给定一个字符串,您可以在 PHP 中获取 unix 时间,如下所示:

date_create('2013-07-01 00:04:37')->getTimestamp();

但是,您将如何调整它以适应正确的时区?另外,您如何从 PHP 将 unix 时间戳存储在 MySQL 中?

4

3 回答 3

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');

这输出您可以在INSERT语句2013-06-30 19:04:37中使用此函数。

于 2013-07-08T08:23:39.140 回答
0

您可以添加时区;)

就像是:

date_create('2013-07-01T00:04:37-05:00')->getTimestamp();

正如您在文档中看到的那样:http: //es1.php.net/manual/en/datetime.construct.php

于 2013-07-08T08:21:33.007 回答
0

当您将时间和日期转换为 Unix 时间戳时,它会将其转换为表示自 1970 年 1 月 1 日 00:00 UTC 以来的秒数的整数。因此,如果您将时区输入到创建时间戳的函数中,它将调整秒数。

然后您可以将此值保存在 MySQLint列中,因为时间戳是有符号整数。请参阅如何将 unix 时间戳存储在 int 列中?有关这方面的更多信息。你可以做类似的事情

INSERT INTO table (timestamp, content) VALUES ('your timestamp','your content');

将其插入您的表中。

于 2013-07-08T08:32:04.067 回答