【发布时间】:2012-07-24 11:24:01
【问题描述】:
我有一个 PHP MySQL 查询,它将一些数据插入到 MySQL 数据库中,它包含一个时间戳。
目前INSERT查询使用NOW()作为时间戳列,并以以下格式保存在数据库中:2012-07-24 13:13:02
不幸的是,服务器不在我的时区,它被列为 America/Los_Angeles,如图所示 print date_default_timezone_get();
我希望做以下事情:
date_default_timezone_set('Europe/London');
$timefordbLondonEU = date('Y-m-d H:i:s', time());
只需将$timefordbLondonEU 代替NOW() 保存到数据库中;
这是保存此类数据的好方法吗?
非常感谢,
理查德
[添加文本]
我将 MySQL db 中的 Type 更改为 DateTime 并执行以下操作:
date_default_timezone_set('Europe/London');
$timefordbLondonEU = date('Y-m-d H:i:s', time());
它正在工作,但我还没有得到整体概念。
Assumptions based on your comments:
- MySQL = 没有数据类型 UTC,您只需使用 INT 类型。
- Unix_TimeStamp() 会保存当前时间还是计数? UTC 格式,如 1343247227。
- 由于 UTC 是从一个常见的 0 点开始计数,因此您可以从中获取任何时区。假设您不希望日期早于 1970 年的参考 0 点。
我的猜测和你所说的引导是最好的方法是将时间保存为 INT (1343247227) 中的 UTC,然后从那里生成你想要的任何时区。再次假设您不需要在 1970 年参考 0 点之前存储日期。
同样,为什么不在已知时区存储为日期时间 YYYY-MM-DD HH:MM:SS,然后转换为 UTC 或其他时区。这一切似乎都很混乱=(
【问题讨论】:
-
将所有时间存储为 UTC,然后在输出时将其转换为您想要的时间。
-
或者,如果您不需要存储 1970 年之前的日期,您可以将它们存储为 Unix 时间戳,方法是将字段设为
INT。
标签: php mysql datetime timestamp