我有一個如下串列:
T = [10.749957462142994, 10.90579301143351, 10.981580990083001]
包含timestamp十進制格式
hours = [ int(x) for x in T ]
minutes =[ (x*60) % 60 for x in T]
print("%d:d"%(hours[0], minutes[0]), "%d:d"%(hours[1], minutes[1]), "%d:d"%(hours[2], minutes[2]))
['10:44', '10:54', '10:58']
我想創建一個沒有年月日但只有小時和分鐘的日期時間串列。
我試過這個
from datetime import datetime
DT = []
for i,t in enumerate(T):
string = str("%d:d"%(hours[i], minutes[i]))
datetime_object = datetime. strptime(string, '%H:%M')
DT.append(datetime_object)
但是DT看起來如下
DT
[datetime.datetime(1900, 1, 1, 10, 44),
datetime.datetime(1900, 1, 1, 10, 54),
datetime.datetime(1900, 1, 1, 10, 58)]
如何洗掉年、日和月的資訊,并具有以下內容:
DT
[datetime.datetime( 10, 44),
datetime.datetime( 10, 54),
datetime.datetime( 10, 58)]
uj5u.com熱心網友回復:
我采取了稍微不同的方法:
from datetime import time, datetime, timedelta
T = [10.749957462142994, 10.90579301143351, 10.981580990083001]
values = [(datetime.min timedelta(hours=t)).time() for t in T]
timedelta 物件支持小時的任意浮點數。結果是相當簡單的 1 行代碼。
uj5u.com熱心網友回復:
您可以使用 datetime.time 或者如果您真的想使用 datetime.datetime 那么您只能使用 datatime.datetime.time() 方法獲取時間。
uj5u.com熱心網友回復:
這是一個簡單的方法:
import datetime
DUMMY_DATETIME = datetime.datetime(2000, 1, 1, 0, 0)
HOUR = datetime.timedelta(hours=1)
T = [10.749957462142994, 10.90579301143351, 10.981580990083001]
DT = [(DUMMY_DATETIME hours * HOUR).time() for hours in T]
Atimedelta可以乘以 a float(自動舍入到微秒),這使您可以輕松地將小數小時值轉換為 a timedelta,而無需手動執行乘法/除法/模數乘以 60。
物件的日期部分(Y2K)DUMMY_DATETIME只是為了讓 操作員作業(因為time timedelta是 a TypeError,但datetime timedelta很好)。重要的是小時/分鐘/秒部分為 0。
因此,該運算式DUMMY_DATETIME hours * HOUR給出了一個時間戳,該時間戳是紀元之后指定的小時數。呼叫.time()那個物件會給你時間,沒有無用的年/月/日部分。
>>> DT
[datetime.time(10, 44, 59, 846864), datetime.time(10, 54, 20, 854841), datetime.time(10, 58, 53, 691564)]
>>> [t.strftime('%H:%M') for t in DT]
['10:44', '10:54', '10:58']
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/531760.html
標籤:Python约会时间
