以python格式字符串计算时区偏移量[重复]

Posted

技术标签:

【中文标题】以python格式字符串计算时区偏移量[重复]【英文标题】:Calculating the timezone offset in a python format string [duplicate] 【发布时间】:2020-02-14 17:15:59 【问题描述】:

我有一个 datetime 对象,我需要将其转换为给定的时区并获取该日期的时区偏移量。这是一个例子:

>>> datetime.datetime(2045,11,30, 0,0,0).strftime("%Y-%m-%dT%H:%M:%S")
'2045-11-30T00:00:00'

我想动态添加时区“美国/芝加哥”的偏移量,例如,结果如下所示:

'2045-11-30T00:00:00T-06:00' # fluctuates based on DST, cannot be hardcoded

我该怎么做?

【问题讨论】:

基本上你需要 pytz 或 dateutil 来实现你的目标。请参阅链接的副本。谢谢。 【参考方案1】:

我相信您正在寻找的是tzinfo。在文档中有一个工作示例,说明它如何在下面复制:

>>> from datetime import tzinfo, timedelta, datetime
>>> class TZ(tzinfo):
...     """A time zone with an arbitrary, constant -06:39 offset."""
...     def utcoffset(self, dt):
...         return timedelta(hours=-6, minutes=-39)
...
>>> datetime(2002, 12, 25, tzinfo=TZ()).isoformat(' ')
'2002-12-25 00:00:00-06:39'
>>> datetime(2009, 11, 27, microsecond=100, tzinfo=TZ()).isoformat()
'2009-11-27T00:00:00.000100-06:39'

对于您的具体示例,结果如下所示:

>>> datetime(2045,11,30, 0,0,0, tzinfo=TZ()).isoformat()
'2045-11-30T00:00:00-06:00'

如果您想将 DST 偏移量计算为 TZ 偏移量,则需要使用 dst 并且文档 here 中有一个更长的示例,用于同时实现这两者。

【讨论】:

有一个硬编码的偏移量。 OP 专门询问如何使用偏移量波动且因此无法硬编码的命名时区来执行此操作。

以上是关于以python格式字符串计算时区偏移量[重复]的主要内容,如果未能解决你的问题,请参考以下文章

在不使用字符串的情况下在 javascript 中获取另一个时区的时区偏移量

将其他时区转换为本地时区(偏移量)

如何使用 pytz 从时区字符串中获取 UTC 偏移量?

Python - 给定时间戳UTC和UTC偏移量的时区名称

如何以正确的格式获取 UTC 偏移量(时区)?

在 MySQL 中计算时区的偏移量