strptime是否有通配符格式指令?

rut*_*ord 5 python time timezone strptime

我正在这样使用strptime

import time
time.strptime("+10:00","+%H:%M")
Run Code Online (Sandbox Code Playgroud)

但是“ +10:00”也可以是“ -10:00”(与UTC的时区偏移),这会破坏上述命令。我可以用

time.strptime("+10:00"[1:],"%H:%M")
Run Code Online (Sandbox Code Playgroud)

但理想情况下,我认为在格式代码前使用通配符更具可读性。

Python的strptime/ 是否存在这样的通配符运算符strftime

agf*_*agf 4

没有通配符运算符。支持的格式指令列表位于strptime文档中。

您正在寻找的是格式指令,它支持或%z形式的时区表示。虽然它已经支持了一段时间,但仅从Python 3.2 开始支持。+HHMM-HHMMdatetime.strftimestrptime

在 Python 2 上,处理这个问题的最佳方法可能是使用datetime.datetime.strptime,手动处理负偏移量,并获取datetime.timedelta

import datetime

tz = "+10:00"

def tz_to_timedelta(tz):
    min = datetime.datetime.strptime('', '')
    try:
        return -(datetime.datetime.strptime(tz,"-%H:%M") - min)
    except ValueError:
        return datetime.datetime.strptime(tz,"+%H:%M") - min

print tz_to_timedelta(tz)
Run Code Online (Sandbox Code Playgroud)

在 Python 3.2 中,删除:并使用%z

import time
tz = "+10:00"
tz_toconvert = tz[:3] + tz[4:]
tz_struct_time = time.strptime(tz_toconvert, "%z")
Run Code Online (Sandbox Code Playgroud)