在更改时区后获取Python中的系统日期/时间
在我的系统上,我把时钟的当前时区设置为“吉隆坡,新加坡(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