我必须在 Python 中做啥才能创建一个代表 2019 年 1 月 1 日纽约时间(东部时间)18:00 的对象? [复制]
Posted
技术标签:
【中文标题】我必须在 Python 中做啥才能创建一个代表 2019 年 1 月 1 日纽约时间(东部时间)18:00 的对象? [复制]【英文标题】:What do I have to do in Python to create an object which represents the January 1st, 2019 at 18:00 New York time (Eastern Time)? [duplicate]我必须在 Python 中做什么才能创建一个代表 2019 年 1 月 1 日纽约时间(东部时间)18:00 的对象? [复制] 【发布时间】:2020-06-16 05:24:33 【问题描述】:我正在尝试定义一个日期时间对象,它代表纽约时间 2019 年 1 月 1 日 18:00。
我试试:
import datetime
import pytz
ts = datetime.datetime(2019, 1, 1, 18, 0, 0, 0, tzinfo=pytz.timezone("US/Eastern"))
print(ts)
我得到:
2019-01-01 18:00:00-04:56
为什么是 -04:56?
我正在使用 Python 3.7
【问题讨论】:
这能回答你的问题吗? Python pytz timezone function returns a timezone that is off by 9 minutes 我不认为它确实回答了这个问题,但我会明确地更改问题标题。我很困惑,如何生成给定时区的特定时间戳?即我应该在 Python 中做什么来创建一个代表 2019 年 1 月 1 日纽约时间(复活节时间)18:00 的对象。 这回答了你的问题:***.com/questions/26264897/… 这能回答你的问题吗? Time zone field in isoformat 【参考方案1】:如果时区具有夏令时转换 (see here),则使用带有日期时间构造函数的 tzinfo 往往会出现问题。您可以使用 UTC 时区并在显示时间时转换为相应的本地时间作为解决方法。
【讨论】:
我的输入数据是来自纽约的时间戳,如果我理解正确的话,你是说在 UTC 中存储时间戳,我想用纽约时间戳存储它们。【参考方案2】:Victor 在上面的 cmets 中提供的这个链接 (Time zone field in isoformat) 包含答案。
我在这里特别介绍了为给定时间戳构造对象的方法。
eastern = pytz.timezone("US/Eastern")
print(eastern.localize(datetime.datetime(2019, 1, 1, 18)).isoformat())
【讨论】:
以上是关于我必须在 Python 中做啥才能创建一个代表 2019 年 1 月 1 日纽约时间(东部时间)18:00 的对象? [复制]的主要内容,如果未能解决你的问题,请参考以下文章