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

5 投票
1 回答
5104 浏览
提问于 2025-04-17 02:36

在我的系统上,我把时钟的当前时区设置为“吉隆坡,新加坡(UTC+08:00)”,这意味着我的时钟比标准时间快了八个小时(当然是这样)。

在Python中,我用下面的代码来获取当前的时间和日期:

from datetime import datetime
dateTimeTuple = datetime.now()

我使用这个方法是因为我需要获取时间的各个部分(包括微秒)。

但是,它总是给我返回一个普通的时间(并没有根据我选择的时区快八个小时)。

有没有其他的方法可以做到这一点?

1 个回答

4

datetime.now() 会返回一个没有时区信息的本地时间。要把这个时间转换成吉隆坡的时间,首先需要将它变成一个带有时区信息的时间,然后再转换成吉隆坡的时区。

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

import pytz
import datetime as dt
kuala_lumpur=pytz.timezone('Asia/Kuala_Lumpur')
localtz=pytz.timezone('Europe/London')

这里是没有时区信息的时间。

now = dt.datetime.now()

使用 localize 方法来给这个时间加上时区信息。

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

使用 astimezone 方法来转换成另一个时区:

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

由于 英国的夏令时吉隆坡没有夏令时,所以现在的时差是7个小时。

撰写回答