在 Python 中为时间分配日期
Posted
技术标签:
【中文标题】在 Python 中为时间分配日期【英文标题】:Assign a date to a time in Python 【发布时间】:2015-12-06 00:38:08 【问题描述】:在纽约市的服务器上运行的 Python 脚本从仅给出时间的 websocket API 接收实时数据流,例如:8:21:56
。提供的时间在时区Asia/Chongqing
中,即UTC +08:00
。本地服务器位于America/New_York
时区,即UTC -05:00
。
这意味着两个时区的日期每天都有 12-13 小时的不同,具体取决于夏令时。
问题:知道我的服务器位于不同的时区,我如何找到将时间转换为适当日期时间所需的日期?例如:如果服务器上的本地日期是2015-12-05
,则将8:21:56
转换为UTC 时区的2015-12-06 7:36:56.000Z
。
【问题讨论】:
How do I convert local time to UTC in Python?的可能重复 @KevinGuan 在链接的 SO 问题中,给出了日期。对于这个问题,websocket 流中的日期可能与本地服务器中的日期不同,所以不是那么直接 我认为这无关紧要,因为该问题的已接受答案让您手动设置时区。所以你可以设置你需要隐蔽的时区。 【参考方案1】:America/New_York
与许多其他时区一样,可能在不同日期有不同 utc 偏移量。
获取一个时区 (Asia/Chongqing
) 中对应于该时区 (Asia/Chongqing
) 中给定 时间 ('8:21:56'
) 的 日期 假设您知道另一个时区 (America/New_York
) 中的 日期,您应该创建一个类似于 pytz's .localize()
method 的算法,其中困难的部分是 将本地时间转换为 UTC并非总是可能的——其余的都很简单(如果您知道 UTC 日期/时间和区域 ID,例如 Asia/Chongqing
,那么很容易 (utc_dt.astimezone(tz).date()
) 在 Asia/Chongqing
中获取日期。
如果您只需要在给定日期范围内支持固定数量的时区,您可以简化算法。
【讨论】:
以上是关于在 Python 中为时间分配日期的主要内容,如果未能解决你的问题,请参考以下文章
Python时间转换函数:时间转化为时间戳时间戳转化为时间当前日期当前时间星期几前面或者后面多少天年月日等
Python pandas 通过 dt 访问器有效地将日期时间转换为时间戳