我的服务器设置了正确的特定于区域设置的时区,这一点重要吗



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

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

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

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

我的印象是,奇怪的唯一来源是机器的物理位置不符合其时间设置中的时区。但这只是"怪异",不应该有任何缺点(只要时间设置准确)。

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

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

另请参阅此问题。

最新更新