Php 在数据库中存储时区的正确方法?

Php 在数据库中存储时区的正确方法?,php,mysql,timezone,save,Php,Mysql,Timezone,Save,让我解释一下:我不是在问在数据库中存储特定日期时间时区的正确方法。我说的是时区本身。例如: 我有一个名为“users”的MySQL表。现在,在这个表上,我希望有一个列,包含用户居住的任何地方的时区(这是由用户提供的,将从列表中选择)。我正在使用PHP,它有一个时区字符串列表,如下所示: 现在,显而易见的解决方案(至少对我来说)是在“users”表中创建一个VARCHAR列,然后将PHP使用的时区字符串存储在该列中 现在我考虑一下,假设我将始终使用PHP与该数据库表进行交互,虽然现在是这样,但将

让我解释一下:我不是在问在数据库中存储特定日期时间时区的正确方法。我说的是时区本身。例如:

我有一个名为“users”的MySQL表。现在,在这个表上,我希望有一个列,包含用户居住的任何地方的时区(这是由用户提供的,将从列表中选择)。我正在使用PHP,它有一个时区字符串列表,如下所示:

现在,显而易见的解决方案(至少对我来说)是在“users”表中创建一个VARCHAR列,然后将PHP使用的时区字符串存储在该列中

现在我考虑一下,假设我将始终使用PHP与该数据库表进行交互,虽然现在是这样,但将来可能不会这样。(如果我错了,请纠正我)PHP的时区字符串可能不适用于其他编程语言,可能其他语言有自己的时区处理“常量”

那么,您将如何在DB列中保存用户的时区首选项呢?任何想法都会受到欢迎

注意:PHP时区的有用之处在于,即使DST有效,它们也会自动将其考虑在内,这真是太棒了。因此,您可以看到我对使用它们而不仅仅是存储数字偏移量的兴趣

(如果我错了,请纠正我)PHP的时区字符串可能不适用于其他编程语言

好的,我会的。:)

PHP实现了(同一事物的许多名称)。这是最接近行业标准的东西,几乎在每种编程语言和平台中都实现了它

唯一一个本机不支持它的操作系统是Microsoft Windows,因为Microsoft维护自己的时区数据库。因此,对于以Windows为中心的平台,如.Net,如果您希望支持这种时区样式,则必须使用一些

在或上阅读更多内容


是的,您只需将时区id字符串存储为varchar。这是最好的做法。

您可以在数据库中存储一个数字偏移量,并创建一个PHP“配置”文件,将数字偏移量映射回PHP的时区字符串。@Passerby-偏移量不是时区。有许多时区全年都会更改偏移量,还有许多不同的时区共享相同的偏移量。@MattJohnson您可以存储任何格式的偏移量,只要您的程序知道如何将它们“翻译”回特定于语言的常量。你可以为加州存储“-8.1”,而不是为整个-8区域存储“-8”,为另一个地方存储“-8.2”(不是美国人,所以不知道太多:)。@passway-不错的想法,但目前数据库中有548个时区。这将是一项回报甚微的任务。看,我不知道这件事,太棒了!然后,我将把时区字符串ID存储为varchar。谢谢!