北京时间与UTC时间转换

文章介绍了如何使用Python的datetime模块将北京时间转换为UTC时间,主要涉及astimezone方法和timezone对象,通过时区差进行转换。示例代码演示了从当前北京时间到UTC时间的转换过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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
要将UTC时间转换北京时间,可以使用以下工具函数: ```python from datetime import datetime, timezone, timedelta def convert_beijing_from_utc(utc_dt: datetime, hours=8): """转换UTC时间北京时间""" beijing_time = (utc_dt + timedelta(hours=hours)).replace(tzinfo=timezone.utc) # 需要加上UTC时区 beijing_time = beijing_time.astimezone(timezone(timedelta(hours=hours))) return beijing_time ``` 使用该函数进行转换: ```python utc_time = datetime.utcnow() # 获取当前的UTC时间 beijing_time = convert_beijing_from_utc(utc_time) # 转换北京时间 print("UTC时间:", utc_time) print("转换北京时间:", beijing_time) ``` 引用中的代码演示了将当前的UTC时间转换北京时间的过程。根据引用的说明,北京时间UTC时间加上8个小时。将UTC时间加上8个小时即可得到北京时间。通过调用`convert_beijing_from_utc`函数,可以将UTC时间转换北京时间。 引用中的结果展示了具体的转换过程。其中,本地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。 所以,通过将UTC时间加上8个小时,即可将UTC时间转换北京时间。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [北京时间UTC时间转换](https://blog.csdn.net/weixin_35757704/article/details/129295351)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

呆萌的代Ma

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值