以下代碼將字串轉換為時間戳。時間戳為:1646810127。
但是,如果我使用 Excel 將此日期和時間轉換為浮點數,我會得到:44629,34。我需要 Python 腳本的 Excel 輸出。
我嘗試使用幾個不同的日期時間字串來查看兩個數字之間是否有任何模式,但似乎找不到任何模式。
關于如何讓代碼輸出 44629,34 的任何想法?
非常感激
import datetime
date_time_str = '2022-03-09 08:15:27'
date_time_obj = datetime.datetime.strptime(date_time_str, '%Y-%m-%d %H:%M:%S')
print('Date:', date_time_obj.date())
print('Time:', date_time_obj.time())
print('Date-time:', date_time_obj)
print(date_time_obj.timestamp())
>>output:
Date: 2022-03-09
Time: 08:15:27
Date-time: 2022-03-09 08:15:27
1646810127.0
uj5u.com熱心網友回復:
計算 datetime 物件的 timedelta 與 Excel 的“第零天”,然后將 timedelta 的 total_seconds 除以一天中的秒數以獲得 Excel 序列日期:
import datetime
date_time_str = '2022-03-09 08:15:27'
UTC = datetime.timezone.utc
dt_obj = datetime.datetime.fromisoformat(date_time_str).replace(tzinfo=UTC)
day_zero = datetime.datetime(1899,12,30, tzinfo=UTC)
excel_serial_date = (dt_obj-day_zero).total_seconds()/86400
print(excel_serial_date)
# 44629.3440625
注意:我在這里將時區設定為 UTC 以避免任何歧義 - 根據需要進行調整。
由于問題被標記為pandas,您將在這里做同樣的事情,只是您不需要設定 UTC,因為 pandas 默認為天真日期時間假定 UTC:
import pandas as pd
ts = pd.Timestamp('2022-03-09 08:15:27')
excel_serial_date = (ts-pd.Timestamp('1899-12-30')).total_seconds()/86400
print(excel_serial_date)
# 44629.3440625
也可以看看:
- 背景:1899 年 12 月 30 日作為基準日期背后的故事是什么?
- 逆運算:用 pandas 轉換 Excel 樣式的日期
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/442409.html
下一篇:禁用特定時間的按鈕
