我一直在試圖找出我的 for 回圈出了什么問題。為什么在所有 UNIX 日期變數中附加相同的 UNIX 時間戳?
now = datetime.datetime.today()
dates = []
for x in range(7):
d = now - timedelta(days=x)
dates.append(d.strftime("%Y/%m/%d"))
print(dates)
unixdates = []
for date in dates:
e = time.mktime(datetime.datetime.strptime(datetime.date.today().strftime("%m/%d/%Y"), '%m/%d/%Y').timetuple())
unixdates.append(e)
print(unixdates)
這是輸出:
['2021/11/03', '2021/11/02', '2021/11/01', '2021/10/31', '2021/10/30', '2021/10/29', '2021/10/28']
[1635912000.0, 1635912000.0, 1635912000.0, 1635912000.0, 1635912000.0, 1635912000.0, 1635912000.0]
uj5u.com熱心網友回復:
因為你用相同的日期一遍又一遍,這將始終給出相同的UNIX時間(datetime.date.today()與datetime正在這里datetime模塊)。
通過使用datetime.timestamp方法獲取 UNIX 時間來簡化您的代碼:
from datetime import datetime, timedelta
today = datetime.now().date()
dates, unixdates = [], []
for x in range(7):
d = today - timedelta(days=x)
dates.append(d.strftime("%Y/%m/%d"))
unixdates.append(datetime.combine(d, datetime.min.time()).timestamp())
print(dates)
print(unixdates) # my machine is on UTC 1
# ['2021/11/03', '2021/11/02', '2021/11/01', '2021/10/31', '2021/10/30', '2021/10/29', '2021/10/28']
# [1635894000.0, 1635807600.0, 1635721200.0, 1635631200.0, 1635544800.0, 1635458400.0, 1635372000.0]
另請注意,您在這里使用了naive datetime,如果您不設定 tz 引數,它將假定為當地時間,例如
today = datetime.now(timezone.utc)
獲取UTC。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/347845.html
