如何使用Python的datetime模块获取时区调整后的星期几?
解决指定时区下的星期几获取问题
首先要纠正一个误区:dt.date.today()返回的是本地系统时区的日期,并非UTC时区。另外,date类型是无时区感知的,所以它没有astimezone()方法,这也是你那段代码无法运行的原因。
要准确获取指定时区(比如GMT)的星期几,核心是先拿到带时区信息的当前datetime对象,再提取日期并获取星期数,具体实现可以参考以下两种简便方法:
方法1:直接获取指定时区的当前时间
import datetime as dt import pytz # 获取GMT时区的当前datetime(带时区信息) gmt_datetime = dt.datetime.now(pytz.gmt) # 提取日期后获取星期几(0代表周一,6代表周日) weekday = gmt_datetime.date().weekday()
方法2:从UTC时间转换到目标时区
如果你的业务逻辑需要从UTC时间出发转换,也可以这么写:
import datetime as dt import pytz # 获取UTC时区的当前datetime utc_datetime = dt.datetime.now(pytz.utc) # 转换为GMT时区 gmt_datetime = utc_datetime.astimezone(pytz.gmt) # 获取星期几 weekday = gmt_datetime.date().weekday()
补充说明
- 若需要其他时区,只需将
pytz.gmt替换为对应时区字符串即可,比如北京时间用pytz.timezone('Asia/Shanghai') weekday()返回值范围是0(周一)到6(周日);如果需要以周日为一周起始(0=周日,6=周六),可以改用isoweekday()方法(返回1=周一,7=周日)
内容的提问来源于stack exchange,提问作者user14911051
相关产品推荐
相关产品推荐

