我沒有時區名稱,只有一個偏移值,如+0400
。在Python中將UTC字符串轉換爲本地日期時間字符串?
我有UTC的日期時間字符串:如2014-01-07T09:29:35Z
。
我想在本地時間的字符串,如2014-01-07T13:29:35
。
如何做到這一點?
我沒有時區名稱,只有一個偏移值,如+0400
。在Python中將UTC字符串轉換爲本地日期時間字符串?
我有UTC的日期時間字符串:如2014-01-07T09:29:35Z
。
我想在本地時間的字符串,如2014-01-07T13:29:35
。
如何做到這一點?
你可以寫一個函數來轉換字符串格式。
from datetime import datetime, timedelta
old_time = '2014-01-07T09:29:35Z'
def time_converter(old_time, time_zone):
time_zone = float(time_zone[:3] + ('.5' if time_zone[3] == '3' else '.0'))
str_time = datetime.strptime(old_time, "%Y-%m-%dT%H:%M:%SZ")
return (str_time + timedelta(hours=time_zone)).strftime("%Y-%m-%dT%H:%M:%SZ")
if __name__ == '__main__':
for time_zone in ('+0400', '+0430', '-1400'):
print(time_converter(old_time, time_zone))
輸出:
2014-01-07T13:29:35Z
2014-01-07T13:59:35Z
2014-01-06T19:29:35Z
謝謝,這對我有用。 – ATOzTOA
不客氣:) –
您還可以創建時區類創建時區意識到datetime對象:
from datetime import tzinfo, timedelta, datetime
class myTimeZone(tzinfo):
def utcoffset(self, dt):
return timedelta(hours=4)
def dst(self, dt):
return timedelta(hours=0)
class utcTimeZone(tzinfo):
def utcoffset(self, dt):
return timedelta(hours=0)
def dst(self, dt):
return timedelta(hours=0)
d = datetime.strptime("2014-01-07T09:29:35Z","%Y-%m-%dT%H:%M:%SZ").replace(tzinfo=utcTimeZone())
print(d.astimezone(myTimeZone()).isoformat()) # Prints '2014-01-07T13:29:35+04:00'
@Thrustmaster請仔細閱讀其說,問題:「我沒有TimeZone的名稱「。 – ATOzTOA
@ATOzTOA你有互聯網連接嗎? – Danpe