Python时区datetime设置UTC转东八区

小熊 Python评论1,024字数 1065阅读3分33秒阅读模式

因为我们每个月都要播报,就写了一个自动化程序,部署到docker上,没有Mount /etc/localtime 的情况下,时间是UTC,所以我想到在代码里时区限死BJS也就是UTC+8,一个比较简单的知识点记录一下。

按需自取 计算机必看经典书单和课程资源(含下载方式)

时区获取

用到的Python标准库datetime库timezone类。

datetime.timezone(offset, name=None)

这个构造函数允许你定义一个特定的时区,其中offset参数表示与协调世界时(UTC)的偏移量,而 name参数可选,用于为时区指定一个名称。

offset 参数必须指定为一个 timedelta 对象,表示本地时间与 UTC 的时差。 它必须严格限制于 timedelta(hours=-24)timedelta(hours=24) 之间,否则会引发 ValueError

name 参数是可选的。 如果指定则必须为一个字符串,它将被用作 datetime.tzname() 方法的返回值。

例:

from datetime import datetime, timezone, timedelta

# 创建一个时区对象,表示UTC+8

custom_timezone = timezone(timedelta(hours=8), name='Asia/Shanghai')

# 创建一个带有时区信息的日期时间对象

dt_with_custom_timezone = datetime(2023, 1, 1, 12, 0, 0, tzinfo=custom_timezone)

# 打印结果

print(f"日期时间对象 {dt_with_custom_timezone} 所处时区:{custom_timezone}")

输出:日期时间对象 2023-01-01 12:00:00+08:00 所处时区:Asia/Shanghai

引用:https://blog.csdn.net/m0_73608980/article/details/135271944

now时间改造

timezone类,一般会用于当作参数传入,常用datetime.now()会以当前服务器时间来计算。

可以直接传入timezone

from datetime import datetime, timedelta, timezone

tz = timezone(timedelta(hours=8))
now = datetime.now(tz)
tomorrow = now + timedelta(days=1)
yesterday = now + timedelta(days=-1)

weinxin
公众号
扫码订阅最新深度技术文,回复【资源】获取技术大礼包
小熊