我有一个不使用美国时间的网站。是否可以更改一个网站的PHP和MySQL时间?如果是这样,我需要做什么?
答案 0 :(得分:2)
你可以按连接进行,当你开始连接这个网站时,
看看:
http://dev.mysql.com/doc/refman/5.6/en/time-zone-support.html
#
每个连接时区。每个客户 连接有自己的时区 设置,由会话给出 time_zone变量。最初, session变量取自其值 全局time_zone变量,但是 客户可以更改自己的时区 声明:
mysql> SET time_zone = timezone;
但请注意:
当前会话时区设置会影响显示和存储 区域敏感的时间值。 这包括显示的值 NOW()或CURTIME()等函数, 和存储和检索的值 来自TIMESTAMP专栏。的价值观 TIMESTAMP列是从中转换而来的 UTC的当前时区 存储,从UTC到当前 检索时区。
当前时区设置没有 影响函数显示的值 例如UTC_TIMESTAMP()或其中的值 DATE,TIME或DATETIME列。也不 是存储的那些数据类型中的值 在UTC;时区适用于他们 仅在从TIMESTAMP转换时 值。如果您想要特定于语言环境 DATE,TIME或DATETIME的算术运算 值,将它们转换为UTC,执行 算术,然后转换回来。
如何设置的示例位于:
http://www.electrictoolbox.com/mysql-set-timezone-per-connection
答案 1 :(得分:1)
对于PHP:
<?php
date_default_timezone_set('Europe/London');
?>
请在此处查看PHP支持的时区列表:http://www.php.net/manual/en/timezones.php
对于MySQL,你需要像这样执行查询:
SET time_zone = timezone;
查看MySQL文档中的详细信息:http://dev.mysql.com/doc/refman/5.1/en/time-zone-support.html
答案 2 :(得分:0)
是的,您应该在PHP内部进行所有时区转换,而不是mysql。
对于数据库中存储日期/时间的每列,
a)将其存储在GMT中并进行必要的转换或
b)始终以当地时间存储
在这两种情况下,MySQL都不需要知道,但是你的开发人员这样做是确保你在模式中记录这个,如果你有混合物。
通常需要存储本地时间日期/时间值。 MySQL不记得日期时间列中的时区(也不容易;其他数据库在某些情况下会尝试)。
如果您要存储已经发生的精确时间点(例如现在),那么您应该始终将其存储在UTC中,以避免混淆其确切的发生时间。有些应用程序会使用epoch / unix时间来实现此目的。
您可能需要在当地时间存储的未来时间,因为您无法确切知道它将发生什么时间,这可能取决于可能尚未当选的政客的决定。
时区是棘手的事情,因为政客控制它们。它们倾向于在几乎没有警告的情况下改变(通常只有几年)