📜  Python DateTime astimezone() 方法(1)

📅  最后修改于: 2023-12-03 14:45:57.121000             🧑  作者: Mango

Python DateTime astimezone() 方法

在 Python 中,datetime 模块提供了一些日期和时间处理函数,其中 astimezone() 方法是将 UTC 日期时间转换成本地日期时间的有用方法。它将原始日期时间对象从一种时区转换为另一种时区,并返回一个新日期时间对象,该对象表示转换后的时刻。在本文中,我们将深入介绍 astimezone() 方法的使用方式。

语法

astimezone() 方法接受一个时区对象作为参数,该对象表示目标时区。在 Python 中,时区对象由 pytz 模块提供。以下是 astimezone() 方法的语法:

datetime.astimezone(tz=None)

其中,

  • tz: 必填项,表示要转换的目标时区。如果为 None,则将本地时区作为目标时区。
示例

在下面的示例中,我们定义了一个 datetime 对象表示 2021 年 4 月 1 日 12:00:00 的 UTC 日期时间。我们将使用 astimezone() 方法将其转换为美国纽约的本地时间。

import pytz
import datetime

utc_dt = datetime.datetime(2021, 4, 1, 12, 0, 0, tzinfo=pytz.UTC)
ny_tz = pytz.timezone('America/New_York')
ny_dt = utc_dt.astimezone(ny_tz)

print(f'UTC datetime: {utc_dt}')
print(f'New York datetime: {ny_dt}')

输出:

UTC datetime: 2021-04-01 12:00:00+00:00
New York datetime: 2021-04-01 08:00:00-04:00

可以看到,在转换时区后,日期时间从 12:00 UTC 转换成了 8:00 纽约时间。

注意事项

请注意,astimezone() 方法只适用于带有有效时区信息的日期时间对象。如果尝试将不带时区信息的日期时间对象转换为不同时区,将引发 ValueError 异常。

此外,astimezone() 方法还可以将日期时间从本地时区转换为 UTC 时区。示例如下:

import pytz
import datetime

local_tz = pytz.timezone('Asia/Shanghai')
local_dt = datetime.datetime(2021, 4, 1, 12, 0, 0, tzinfo=local_tz)
utc_tz = pytz.UTC
utc_dt = local_dt.astimezone(utc_tz)

print(f'Local datetime: {local_dt}')
print(f'UTC datetime: {utc_dt}')

输出:

Local datetime: 2021-04-01 12:00:00+08:00
UTC datetime: 2021-04-01 04:00:00+00:00

在上面的示例中,将本地时间 12:00 转换为 UTC 时间 04:00。

结论

astimezone() 方法是 Python 中用于将日期时间从一个时区转换到另一个时区的有用方法。在使用此方法时,请注意传递正确的时区对象,并确保源日期时间对象已配置为正确的时区信息。