我目前正在努力理解日期時間的檔案。
我正在報廢 Excel 資料,它給了我浮點數,我想重新轉換它以再次有日期。
我的日期格式是小時:秒,例如我想要
0.586111 --> 14:04:00
0.585417 --> 14:03:00
我嘗試使用date time.fromtimestamp(0.586111).strftime('%H-%S')將其重新轉換為所需的格式,但輸出是'01-00',我必須承認,我并不真正了解發生了什么,所以出了什么問題。
我知道一些關于將日期格式化為浮點數的問題已經被問過,但另一種方式更為罕見,我相信有些人可以更清楚地了解在這種情況下使用日期時間。
感謝您的寶貴時間,我希望我的問題是可以理解的。
uj5u.com熱心網友回復:
您的解決方案fromtimestamp實際上非常接近,但需要幾秒鐘,而不是小數天,所以先轉換為那些。
或者,您可以將小數天數作為 timedelta 添加到 datetime 物件。
前任:
from datetime import datetime, timedelta, timezone
sec_per_day = 86400
print(datetime.fromtimestamp(0.586111 * sec_per_day, tz=timezone.utc).strftime('%H:%M:%S'))
# 14:03:59
print((datetime.min timedelta(days=0.586111)).strftime('%H:%M:%S'))
# 14:03:59
注意:不要忘記將 tz 設定為 UTC,否則您本地時間的 UTC 偏移量可能會給您帶來意想不到的結果。如果您使用datetime.min,則時區不存在,所以不用擔心。
uj5u.com熱心網友回復:
時間是 24 小時周期的一小部分。可能有一個內置函式可以將其轉換為時間。如果沒有,試試這個:
def convert_time(t):
t24 = t * 24
hours = int(t24)
# Discard integer part. Ex 14.066664 -> 0.066664
t24 %= 1
minutes = int(t24 * 60)
t24 -= minutes / 60
seconds = int(t24 * 3600)
return datetime.time(hours, minutes, seconds)
輸出:
>>> convert_time(0.586111).strftime("%H:%M:%S")
'14:03:59'
>>> convert_time(0.585417).strftime("%H:%M:%S")
'14:03:00'
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/421492.html
標籤:
上一篇:無法在現有Dataframe中將多個Pandas列從Object轉換為Datetime型別(就地更新)
下一篇:查找行的最小和最大日期時間
