更改时区后在 Python 中获取系统日期/时间

wil*_*oup 5 python time system zone

在我的系统上,我将时钟的当前时区设置为“吉隆坡,新加坡(UTC+08:00)”,这使我的时钟提前了八小时(当然)。

在 python 中,我使用代码来获取当前时间/日期:

from datetime import datetime
dateTimeTuple = datetime.now()
Run Code Online (Sandbox Code Playgroud)

我正在使用这种方法,因为我需要各个部分(包括微秒)。

但是,它总是会返回一个固定的时间(不是根据所选时区提前八小时)。

还有其他方法吗?

unu*_*tbu 4

datetime.now()返回一个简单的本地日期时间。要将其转换为吉隆坡时间,您首先需要将其设置为时区感知日期时间,然后将其转换为吉隆坡时区:

进行时区转换的最简单方法是使用pytz。

import pytz
import datetime as dt
kuala_lumpur=pytz.timezone('Asia/Kuala_Lumpur')
localtz=pytz.timezone('Europe/London')
Run Code Online (Sandbox Code Playgroud)

这是天真的日期时间。

now = dt.datetime.now()
Run Code Online (Sandbox Code Playgroud)

用于localize了解日期时间时区。

now=localtz.localize(now)
print(now)
# 2011-09-19 11:58:46.342254+01:00
Run Code Online (Sandbox Code Playgroud)

用于astimezone转换到另一个时区:

now_in_kuala_lumpur=now.astimezone(kuala_lumpur)
print(now_in_kuala_lumpur)
# 2011-09-19 18:58:46.342254+08:00
Run Code Online (Sandbox Code Playgroud)

由于英国实行夏令时,而吉隆坡没有夏令时,目前时差为 7 小时。