Python日期时间转换器



我正在尝试编写一个Python函数,以将传入的时间戳标准化为yyyy-mm-ddThh:mm+/-tz offset

示例:

def format_ts(ts):

beg_format = [
'%H:%M%a, %b %d, %Y %Z',
'%a, %d %b %Y %H:%M:%S %z',
]
end_format = '%Y-%m-%dT%H:%M %z'
try:
for f in beg_format:
if datetime.strptime(ts, f):
ts_fmt = datetime.strptime(ts, f)
ts_fmt = ts_fmt.strftime(end_format)
return ts_fmt
except:
pass

ts = [
'08:27Sun, Dec 19, 2021 IST',
'Sun, 19 Dec 2021 02:28:56 +0000'
]
for t in ts:
formatted_ts = format_ts(t)
print(formatted_ts)

问题:

  • IIRC,我不应该依赖失败(pass(,而是应该捕获异常并处理
  • 上面的函数通过所有格式迭代所有时间戳(慢速(
  • 除非我遗漏了什么,否则IST不会被%Z读取
  • 由于某些原因,'%a, %d %b %Y %H:%M:%S %z'不适用于ts[1]的正确格式

问题:其他人如何在Python中处理此类问题?

strptime的字符串表示似乎不支持您的时区。您可以使用带有时区的dateutil解析器来克服这一问题。

from dateutil import parser, tz
ts = [
'08:27Sun, Dec 19, 2021 IST',
'Sun, 19 Dec 2021 02:28:56 +0000'
]

def format_ts(ts):
return [parser.parse(t, tzinfos={'IST':tz.gettz('Asia/Calcutta')}) for t in ts]
format_ts(ts)

输出

[datetime.datetime(2021, 12, 19, 8, 27, tzinfo=tzfile('Asia/Calcutta')),
datetime.datetime(2021, 12, 19, 2, 28, 56, tzinfo=tzutc())]

最新更新