l0g*_*g3r 5 python timezone datetime python-2.7
我有一个浮动时区(例如 4.0)。
我想datetime用给定的时区构建。
我试过这个,
datetime.now(timezone)
Run Code Online (Sandbox Code Playgroud)
但它抛出
TypeError: tzinfo argument must be None or of a tzinfo subclass, not type 'float'
Run Code Online (Sandbox Code Playgroud)
所以我想知道我怎样才能tzinfo从浮动中制作?
teo*_*eda 10
我建议你使用pytz,因为它可能更简单。
根据描述:
该库允许使用 Python 2.4 或更高版本进行准确的跨平台时区计算。它还解决了夏令时结束时时间不明确的问题,您可以在 Python 库参考中阅读更多相关信息
>>> from datetime import datetime
>>> import pytz
>>> datetime.now(tz=pytz.UTC)
datetime.datetime(2021, 11, 12, 20, 59, 54, 579812, tzinfo=<UTC>)
>>> datetime.now(tz=pytz.timezone("Europe/Oslo"))
datetime.datetime(2021, 11, 12, 22, 0, 4, 911480, tzinfo=<DstTzInfo 'Europe/Oslo' CET+1:00:00 STD>)
>>> [tz for tz in pytz.common_timezones if tz.startswith("US")]
['US/Alaska',
'US/Arizona',
'US/Central',
'US/Eastern',
'US/Hawaii',
'US/Mountain',
'US/Pacific']
Run Code Online (Sandbox Code Playgroud)
Mar*_*ers 10
如果您使用的是 Python 3.2 或更新版本,则需要创建一个datetime.timezone()对象;它需要一个偏移量作为datetime.timedelta():
from datetime import datetime, timezone, timedelta
timezone_offset = -8.0 # Pacific Standard Time (UTC?08:00)
tzinfo = timezone(timedelta(hours=timezone_offset))
datetime.now(tzinfo)
Run Code Online (Sandbox Code Playgroud)
对于较早的 Python 版本,使用外部库为您定义时区对象是最简单的方法。
该dateutil库包括采用数字偏移量来创建时区对象的对象:
from dateutil.tz import tzoffset
timezone_offset = -8.0 # Pacific Standard Time (UTC?08:00)
tzinfo = tzoffset(None, timezone_offset * 3600) # offset in seconds
datetime.now(tzinfo)
Run Code Online (Sandbox Code Playgroud)
使用Python 3.9的zoneinfo标准库的一行:
>>> from zoneinfo import ZoneInfo
>>> datetime.now(ZoneInfo('US/Pacific'))
datetime.datetime(2022, 8, 15, 21, 59, 10, 422603, tzinfo=zoneinfo.ZoneInfo(key='US/Pacific'))
Run Code Online (Sandbox Code Playgroud)
从 Python 3.6 开始,您可以在对象上使用该astimezone方法来根据用户的区域datetime设置获取时区感知对象:datetime
>>> from datetime import datetime
>>> datetime.now().astimezone().isoformat()
'2023-05-25T17:52:38.524753-07:00'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12283 次 |
| 最近记录: |