我在Python中的串列如下。
[['File_1','2021-09-07: 05:10'],['File_2','2021-09-08 08:05:11']]
上面的時間戳是一個UTC時區的字串。我想把它轉換為美國東部時間區。
我嘗試使用pytz包,使用
datetime.strptime(timestamp,'%Y-%m-%d %H:%M:%S'/span>).astimezone(pytz.timezone('US/Eastern'/span>)
但它給我的結果是
['File_1',datetime. datetime(2021,09,03,4,20,5) ] 。
日期時間的格式不符合預期。
uj5u.com熱心網友回復:
你需要先設定UTC,然后轉換為所需的tz:
from datetime import datetime, timezone
from zoneinfo import ZoneInfo # Python 3.9 標準lib
l = [['File_1','2021-09-09 07:05:10'], ['File_2','2021-09-08 08:05:11'] ]
out = [[i[0], datetime.fromisoformat(i[1]) # Python 3.7
.replace(tzinfo=timezone.utc)
.astimezone(ZoneInfo("America/New_York")) ] for i in l] 。
print(out)
# [['File_1', datetime.datetime(2021, 9, 9, 3, 5, 10, tzinfo=zoneinfo.ZoneInfo(key='America/New_York')], ['File_2', datetime.datetime(2021, 9, 8, 4, 5, 11, tzinfo=zoneinfo.ZoneInfo(key='America/New_York')]]
# with pytz:
import pytz
outp = [[i[0], datetime.fromisoformat(i[1]) # Python 3.7
.replace(tzinfo=timezone.utc)
.astimezone(pytz.timezone("America/New_York")) ] for i in l] 。
print(outp)
# [['File_1', datetime.datetime(2021, 9, 9, 3, 5, 10, tzinfo=<DstTzInfo 'America/New_York' EDT-1 day, 20:00:00 DST>], ['File_2', datetime. datetime(2021, 9, 8, 4, 5, 11, tzinfo=<DstTzInfo 'America/New_York' EDT-1 day, 20:00:00 DST>)]]/span>
如果你想要一個字串而不是資料時間物件,請使用strftime或者更簡單。.isoformat()。
uj5u.com熱心網友回復:
你可以使用下面的片段來獲得與你的輸入相同格式的輸出
from datetime import datetime
import pytz
from pytz import timezone
timestamp = '2021-09-09 07:05:10'/span>
datetime.strptime(timestamp,'%Y-%m-%d %H:%M:%S').astimezone(pytz.timezone('US/Eastern')).strftime("%Y-%m-%d %H:%M:%S")
#輸出
'2021-09-09 03:05:10'
如果你想在格式中顯示時區,你可以使用
datetime.strptime(timestamp,'%Y-%m-%d %H:%M:%S'/span>)。 astimezone(pytz.timezone('US/Eastern')).strftime("%Y-%m-%d %H:%M:%S %Z%z" )
#輸出
'2021-09-09 03:05:10 EDT-0400'
uj5u.com熱心網友回復:
這里有一種方法可以將其轉換為美國東部時間
第1。宣告串列,并確定你要轉換的日期為字串。list = [['File_1'/span>,'2021-09-09 07: 05:10'],['File_2','2021-09-08 08:05:11']]
date_to_convert = list[1][1]
第二步。匯入需要的庫
import pytz
from datetime import datetime, timezone
第三步。將字串轉換為日期時間
d = datetime.fromisoformat(date_to_convert)
第4個。將資料時間的時區宣告為utc.
。d = date_to_string.replace(tzinfo=timezone.utc)
print(d.isoformat())
# 上面的輸出:'2021-09-08T08:05:11 00:00'。
第5個。設定格式并轉換為美國東部時間
fmt = '%Y-%m-%d %H:%M:%S'
est_date = d.astimezone(pytz.timezone('US/Eastern')).strftime(fmt)
print(est_date)
# 上面的輸出:'2021-09-08 04:05:11'。
uj5u.com熱心網友回復:
使用這種方式,大寫和小寫也很重要
。import time
timer = time.strftime("%Y-%m-%d -- %H:%M:%S %p"/span>)
print(timer)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/311898.html
標籤:
