UTC时间也称为世界标准时间,或协调世界时(英语:Coordinated Universal Time),北京时间是东八区,领先UTC 8个小时。 UTC + 时区差= 本地时间, 时区差东为正,西为负,即 【北京时间 = UTC时间+8小时】
我们转化时主要使用自带的datetime
的astimezone
方法
astimezone的详细用法请参考:https://www.geeksforgeeks.org/python-datetime-astimezone-method/
工具函数如下:
from datetime import datetime, timezone, timedelta
def convert_utc_from_beijing(beijing_dt: datetime, hours=8):
"""
转换本地的datetime格式为UTC时间
:param datetime beijing_dt: 北京时间的datetime格式
:param hours: 时区,北京是+8
:return:
"""
utc_time = (beijing_dt - timedelta(hours=hours)).replace(tzinfo=timezone.utc) # 需要加上UTC时区
beijing_utc = utc_time.astimezone(timezone(timedelta(hours=hours)))
return beijing_utc
now_utc = convert_utc_from_beijing(datetime.now())
print("本地datetime时间:", datetime.now())
print("转换为北京的时区:", now_utc)
print("直接读取本地UTC时间:", datetime.utcnow())
print("时间戳:", now_utc.timestamp())
得到结果:
本地datetime时间: 2023-03-02 10:49:08.657267
转换为北京的时区: 2023-03-02 10:49:08.657180+08:00
直接读取本地UTC时间: 2023-03-02 02:49:08.657379
时间戳: 1677725348.65718