我的服务器设置正确的特定于语言环境的时区是不是重要? [复制]

Posted

技术标签:

【中文标题】我的服务器设置正确的特定于语言环境的时区是不是重要? [复制]【英文标题】:Is it important that my server has correct locale-specific timezone set? [duplicate]我的服务器设置正确的特定于语言环境的时区是否重要? [复制] 【发布时间】:2015-09-10 22:49:14 【问题描述】:

所以我的朋友说,当他配置服务器时,他总是将时区设置为 UTC。他说这有助于他确保在使用多台服务器时不会遇到时区问题。他的代码自然会从他的服务器设置中获取日期时间。

我的问题是:如果我有一台位于加利福尼亚 (EST) 的机器,并且我将其设置为时区为 UTC,那么该服务器中的实际时间是否正确?

我的朋友说:如果该服务器在当地时间早上 7 点(美国东部标准时间上午 7:00)收到订单 - 由于服务器配置为 UTC(比美国东部标准时间早 4 小时),那么该订单将保存为已放置在 UTC 时间上午 11 点,这反过来意味着它可以根据需要转换为任何时区。 (将 11 AM UTC 转换为 EST 得到 7 AM EST 是正确的)

我一直认为服务器应该配置到正确的时区。我想我错了。可以这样设置服务器吗?如果服务器计时不是特定于地区的,会有什么缺点吗?

【问题讨论】:

具体参见this answer(来自 dup 链接)。 【参考方案1】:

我的印象是奇怪的唯一来源是机器的物理位置并不符合其时间设置中的时区。但这只是“怪事”,应该没有什么缺点(只要时间设置准确)。

让我们考虑日期对象,例如 Java 中的 DateCalendar。他们的实现实际上将时间存储为 Unix 时间戳(长数字) - Unix 时间戳基本上是相对于 UTC 纪元(自 1970-01-01 00:00:00 UTC 以来经过的(毫秒)秒)。只要时区在客户端、服务器和数据库之间正确存储/转换(反之亦然),一切都应该没问题。时间如何存储在架构的不同位置是一个约定俗成的问题。

事实上,如果您选择 UTC 作为您处理服务器端(在机器上和代码中)的唯一时区(例如调试过程、日志调查等),它甚至可能会有所帮助。例如,日志时间戳将与您的业务逻辑或数据库层记录的时间相当。

另见this question。

【讨论】:

谢谢你的回答..

以上是关于我的服务器设置正确的特定于语言环境的时区是不是重要? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

特定版本为 False 时的特定于版本的程序集引用

PHP,Codeigniter:如何在Web应用程序中根据用户时区/位置设置日期/时间?

如何为 Google 课堂课程设置正确的时区

将 NSString 转换为特定于语言环境的 NSNumber

如何使日期与语言环境无关?

针对 C++ 静态破坏/构造顺序问题的特定于平台的解决方法