北京时间与UTC时间转换

UTC时间也称为世界标准时间,或协调世界时(英语:Coordinated Universal Time),北京时间是东八区,领先UTC 8个小时。 UTC + 时区差= 本地时间, 时区差东为正,西为负,即 【北京时间 = UTC时间+8小时】

我们转化时主要使用自带的datetimeastimezone方法

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

猜你喜欢

转载自blog.csdn.net/weixin_35757704/article/details/129295351
今日推荐