微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将 python 的 datetime.tzinfo 对象转换为钟摆的 Timezone 对象?

如何解决如何将 python 的 datetime.tzinfo 对象转换为钟摆的 Timezone 对象?

我知道我可以将 datetime.datetime 转换为钟摆

from datetime import datetime,timezone
import pendulum

a = datetime(2021,6,1,tzinfo=timezone.utc)
b = pendulum.instance(a)
b.tzinfo.name # the presence of the attribute 'name' means it's a pendulum timezone
type(b.tzinfo) # pendulum.tz.timezone.FixedTimezone

我有一个独立的 datetime.tzinfo ,是否可以将其转换为 pendulum.tz.timezone.*

a = timezone.utc # well,imagine that it can be any tzinfo
b = pendulum.xxxxx(a) # that gives tome pendum.tz.timezone class

有这种方法吗?

解决方法

查看 pendulum.instance() 的实现,您可以看出它依赖于“私有”函数 _safe_timezone,您可以使用该函数将 tzinfo 转换为钟摆的时区。以 _ 下划线开头的方法/函数通常表示它们不构成公共 API 的一部分,但函数在那里。

tzinfo=timezone.utc 的情况下,pendulum.instance() 会将 tzinfo 对象转换为以小时为单位的偏移量并将其传递给 pendulum.datetime,后者将使用 pendulum._safe_timezone() 将其转换为pendulum.tz.timezone.FixedTimeZone。但 _safe_timezone() 也接受常规 datetime.tzinfo 作为输入。

a = pendulum._safe_timezone(timezone.utc) #  Timezone('UTC')
type(a) # pendulum.tz.timezone.FixedTimezone

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。