我是strptime
这样使用的:
import time
time.strptime("+10:00","+%H:%M")
但“+10:00”也可能是“-10:00”(与 UTC 的时区偏移),这会破坏上述命令。我可以使用
time.strptime("+10:00"[1:],"%H:%M")
但理想情况下,我会发现在格式代码前面使用通配符更具可读性。
Python 的strptime
/是否存在这样的通配符运算符strftime
?
没有通配符运算符。支持的格式指令列表strptime
在文档中。
您正在寻找的是%z
格式指令,它支持时区的表示形式+HHMM
或-HHMM
. 虽然它已被支持datetime.strftime
一段时间,但仅strptime
在 Python 3.2 开始时才支持。
在 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)
在 Python 3.2 中,删除:
并使用%z
:
import time
tz = "+10:00"
tz_toconvert = tz[:3] + tz[4:]
tz_struct_time = time.strptime(tz_toconvert, "%z")
我们开发了datetime-glob来从由一致的日期/时间格式生成的文件列表中解析日期/时间。从模块的文档中:
>>> import datetime_glob
>>> matcher = datetime_glob.Matcher(
pattern='/some/path/*%Y-%m-%dT%H-%M-%SZ.jpg')
>>> matcher.match(path='/some/path/some-text2016-07-03T21-22-23Z.jpg')
datetime_glob.Match(year = 2016, month = 7, day = 3,
hour = 21, minute = 22, second = 23, microsecond = None)
>>> match.as_datetime()
datetime.datetime(2016, 7, 3, 21, 22, 23)