如何从 python 中的 tzfile 中查找时区名称



是否可以得到此操作的反向:

import dateutil.tz
tz_ny = dateutil.tz.tz.gettz('America/New_York')
print(type(tz_ny))
print(tz_ny)

这将打印:

dateutil.tz.tz.tzfile
tzfile('/usr/share/zoneinfo/America/New_York')

如何在给定 tzfile 类型的tz_ny的情况下恢复"美国/New_York"?

:注: 如果日期在夏季,tz_ny.tzname(datetime.datetime(2017,1,1))返回"EST"或"EDT"。

如果您只想要tzfile中的时区名称而不是完整路径,您可以例如

import dateutil.tz
tz_ny = dateutil.tz.tz.gettz('America/New_York')
tz_ny_zone= "/".join(tz_ny._filename.split('/')[-2:])
print(tz_ny_zone)

这让你

'America/New_York'

编辑:只是为了完整起见,因为标题只提到了tzfile:除了dateutil还有其他模块可以用来获得tzfile。一种方法是使用 pytz 模块中的timezone()

import pytz
tz_ny_pytz = pytz.timezone('America/New_York')

根据您最初使用的模块,tzfile的类别会有所不同

print(type(tz_ny))
print(type(ty_ny_pytz))

指纹

<class 'dateutil.tz.tz.tzfile'>
<class 'pytz.tzfile.America/New_York'>

对于pytz对象,有一种更直接的方法可以使用 .zone 属性以人类可读的形式访问时区:

print(tz_ny_pytz.zone)

生产

'America/New_York'

原来有一个受保护的成员变量....

tz_ny._filename

'/usr/share/zoneinfo/America/New_York'

相关内容

  • 没有找到相关文章

最新更新