因此,我的朋友说,当他配置服务器时,他总是将它们的时区设置为UTC。他说,这有助于确保他在使用多台服务器时不会遇到时区问题。他的代码自然地从他的服务器设置中获取日期时间。
我的问题是:如果我有一台位于加利福尼亚州(美国东部时间)的机器,并且我设置它的时区是UTC,那么该服务器中的实际时间不是正确的吗?
我的朋友说:如果服务器在当地时间早上7:00收到订单,即美国东部时间上午7:00-由于服务器被配置为UTC (比EST早4小时),那么订单将被保存为在UTC上午11点下的订单,这意味着它可以根据需要转换为任何时区。(将11 AM UTC转换为EST得到7 AM EST,这是正确的)
我一直坚持认为服务器应该配置为正确的时区。我想我错了。可以像这样设置服务器吗?如果服务器计时不是特定于区域设置的,会有什么缺点吗?
发布于 2015-06-25 01:32:15
我的印象是奇怪的唯一来源是机器不是在物理上位于一个遵守其时间设置的时区的地方。但这只是“奇怪”,不应该有任何缺点(只要时间设置准确)。
让我们考虑一下date对象,比如Java语言中的Date或Calendar。他们的实现实际上将时间存储为Unix时间戳(一个长数字)- Unix时间戳基本上是相对于UTC纪元(自1970-01-01 00:00:00 UTC以来经过的(毫秒)秒)。只要在客户端、服务器和数据库之间正确地存储/转换时区(反之亦然),一切都应该没问题。如何将时间存储在架构的不同位置是一个约定问题。
事实上,如果您选择UTC作为您在服务器端(在机器上和代码中)处理的唯一时区(例如,调试过程、日志调查等),这可能会有所帮助。例如,日志时间戳将与您的业务逻辑或db层记录的时间相当。
另请参阅this question。
https://stackoverflow.com/questions/31031558
复制相似问题