我與 GMT 有一個不同時區 6 和 5 的約會
gmt_time6= "2022-05-06T15:11:29.695GMT 06:00"
gmt_time5 = "2022-05-06T14:11:29.785GMT 05:00"
如何決議它,最終格式將是
gmt_time_final6 = "2022-05-06 15:11:29.695000"
gmt_time_final5 = "2022-05-06 15:11:29.695000"
uj5u.com熱心網友回復:
首先,洗掉GMT名稱:
date = "2022-05-06T15:11:29.695GMT 06:00".replace("GMT", "")
然后,像任何其他 ISO 格式一樣決議它:
from datetime import datetime, timezone, timedelta
dt = datetime.fromisoformat(date)
在您的情況下,您希望它作為不知道時區 6 的 ISO 格式(意味著 GMT 6 不顯示時區):
result = dt.astimezone(timezone(timedelta(hours=6))).replace(tzinfo=None).isoformat(sep=" ")
print(result)
一條線:
from datetime import datetime, timezone, timedelta
gmt_time5 = "2022-05-06T14:11:29.785GMT 05:00"
datetime.fromisoformat(gmt_time5.replace("GMT", "")).astimezone(timezone(timedelta(hours=6))).replace(tzinfo=None).isoformat(sep=" ")
結果:'2022-05-06 15:11:29.785000'
uj5u.com熱心網友回復:
我不確定根據什么邏輯,字串中的顯式“GMT”會觸發dateutil決議器*中的奇怪行為,但是通過更明確的手動決議它可以正常作業:
* 參考問題的早期版本。
>>> from datetime import datetime
>>> ts = '2022-05-06T15:11:29.695GMT 06:00'
>>> datetime.strptime(ts, '%Y-%m-%dT%H:%M:%S.%fGMT%z')
datetime.datetime(2022, 5, 6, 15, 11, 29, 695000, tzinfo=datetime.timezone(datetime.timedelta(seconds=21600)))
>>> datetime.strptime(ts, '%Y-%m-%dT%H:%M:%S.%fGMT%z').astimezone()
datetime.datetime(2022, 5, 6, 11, 11, 29, 695000, tzinfo=datetime.timezone(datetime.timedelta(seconds=7200), 'CEST'))
>>> datetime.strptime(ts, '%Y-%m-%dT%H:%M:%S.%fGMT%z').replace(tzinfo=None)
datetime.datetime(2022, 5, 6, 15, 11, 29, 695000)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/475331.html
上一篇:如何使用MSAccess和OLEDB在SQL查詢中比較字串型別的日期
下一篇:從沖浪圖中排除值
