关于日期时间:我的服务器是否有正确的特定于区域设置的时区?

Is it important that my server has correct locale-specific timezone set?

本问题已经有最佳答案,请猛点这里访问。

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

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

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

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


我的印象是唯一的奇怪的来源是机器不是物理上位于一个地方坚持时区,它在其时间设置。但这只是"奇怪",不应该有任何缺点(只要时间设置准确)。

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

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

另请参阅此问题。