我的服务器是否设置了正确的区域设置特定时区是否很重要?

时间:2015-06-24 16:06:27

标签: datetime timezone timezone-offset

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

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

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

我始终认为应将服务器配置为正确的时区。我想我错了。是否可以像这样设置服务器?如果服务器时序不是特定于语言环境,是否有任何缺点?

1 个答案:

答案 0 :(得分:1)

我的印象是奇怪的唯一来源是机器没有物理上位于一个符合时间设置时区的地方。但这只是“怪异”,不应该有任何缺点(只要准确设定时间)。

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

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

另见this question