在纽约服务器上运行的Python脚本从websocket API接收实时数据流,其中仅给出时间,例如:8:21:56
。提供的时间采用时区Asia/Chongqing
即UTC +08:00
。本地服务器位于时区America/New_York
UTC -05:00
。
这意味着两个时区的日期每天不同 12-13 小时,具体取决于夏令时。
问:知道我的服务器位于不同的时区,如何找到将时间转换为适当日期时间所需的日期?例如:如果服务器上的本地日期是2015-12-05
,则以UTC时区将8:21:56
转换为2015-12-06 7:36:56.000Z
。
America/New_York
像许多其他时区一样,在不同的日期可能有不同的UTC偏移量。
要获得一个时区(Asia/Chongqing
(中的日期对应于该时区(Asia/Chongqing
(中的给定时间('8:21:56'
(,假设您知道另一个时区(America/New_York
(的日期,您应该创建一个类似于pytz .localize()
方法的算法,其中困难的部分是将本地时间转换为UTC,这并不总是可能的 - 其余的很简单(如果您知道UTC日期/时间和区域ID例如Asia/Chongqing
,那么很容易(utc_dt.astimezone(tz).date()
(在Asia/Chongqing
中获取日期。
如果您需要在给定日期范围内仅支持固定数量的时区,则可以简化算法。