我正在嘗試撰寫一個 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 中處理此類問題?
uj5u.com熱心網友回復:
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())]
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/390732.html
