使用Python标准库获取当前北京时间 (无需pytz)
中国(大陆、香港、澳门、台湾)、新加坡、马来西亚、文莱、菲律宾均使用UTC+08:00时间且不实施夏时制。 因此无需pytz库,使用Python标准库即可计算当前时间及日期。 此方法不受系统默认时区的影响。
在时区信息数据库中,Asia/Shanghai代表北京时间(中国标准时间),因为上海是人口最多的城市。
from datetime import datetime
from datetime import timedelta
from datetime import timezone
SHA_TZ = timezone(
timedelta(hours=8),
name='Asia/Shanghai',
)
# 协调世界时
utc_now = datetime.utcnow().replace(tzinfo=timezone.utc)
print("UTC:")
print(utc_now, utc_now.time())
print(utc_now.date(), utc_now.tzname())
# 北京时间
beijing_now = utc_now.astimezone(SHA_TZ)
print("Beijing:")
print(beijing_now.strftime('%H_%M_%S'))
print(beijing_now, beijing_now.time())
print(beijing_now.date(), beijing_now.tzname())
# 系统默认时区
local_now = utc_now.astimezone()
print("Default:")
print(local_now, local_now.time())
print(local_now.date(), local_now.tzname())