Skip to main content
 首页 » 编程设计

python之如何在 Python 中添加日期和时间

2025年05月04日11tintown

假设我有两个日期。 如何获取两个日期之间的所有中间日期和时间(从 00 到 23)? 非常感谢!

from datetime import datetime,timedelta, date 
 
date_min = (datetime.today()-timedelta(1)).strftime('%Y-%m-%d')+' 00' 
date_max =  datetime.today().strftime('%Y-%m-%d')+' 00' 
 
date_min, date_max 
 
('2018-09-16 00', '2018-09-17 00') 
 
how to obtain? 
 
'2018-09-16 01', '2018-09-16 02', '2018-09-16 03', '2018-09-16 04', .... , '2018-09-16 21', '2018-09-16 22', '2018-09-16 23', '2018-09-17 00' 

请您参考如下方法:

使用 pandas,它是单行代码:

import pandas as pd 
solution = pd.date_range(start=date_min , end=date_max, freq='1H') 
print(solution)     
DatetimeIndex(['2018-09-16 00:00:00', '2018-09-16 01:00:00', 
                   '2018-09-16 02:00:00', '2018-09-16 03:00:00', 
                   '2018-09-16 04:00:00', '2018-09-16 05:00:00', 
                   '2018-09-16 06:00:00', '2018-09-16 07:00:00', 
                   '2018-09-16 08:00:00', '2018-09-16 09:00:00', 
                   '2018-09-16 10:00:00', '2018-09-16 11:00:00', 
                   '2018-09-16 12:00:00', '2018-09-16 13:00:00', 
                   '2018-09-16 14:00:00', '2018-09-16 15:00:00', 
                   '2018-09-16 16:00:00', '2018-09-16 17:00:00', 
                   '2018-09-16 18:00:00', '2018-09-16 19:00:00', 
                   '2018-09-16 20:00:00', '2018-09-16 21:00:00', 
                   '2018-09-16 22:00:00', '2018-09-16 23:00:00', 
                   '2018-09-17 00:00:00'], 
                  dtype='datetime64[ns]', freq='H') 

如果你想将 pandas timestamp 转换回 datetime,请执行以下操作:

[timestamp.to_pydatetime() for timestamp in solution] 
 
[datetime.datetime(2018, 9, 16, 0, 0), datetime.datetime(2018, 9, 16, 1, 0), datetime.datetime(2018, 9, 16, 2, 0), datetime.datetime(2018, 9, 16, 3, 0), datetime.datetime(2018, 9, 16, 4, 0), datetime.datetime(2018, 9, 16, 5, 0), datetime.datetime(2018, 9, 16, 6, 0), datetime.datetime(2018, 9, 16, 7, 0), datetime.datetime(2018, 9, 16, 8, 0), datetime.datetime(2018, 9, 16, 9, 0), datetime.datetime(2018, 9, 16, 10, 0), datetime.datetime(2018, 9, 16, 11, 0), datetime.datetime(2018, 9, 16, 12, 0), datetime.datetime(2018, 9, 16, 13, 0), datetime.datetime(2018, 9, 16, 14, 0), datetime.datetime(2018, 9, 16, 15, 0), datetime.datetime(2018, 9, 16, 16, 0), datetime.datetime(2018, 9, 16, 17, 0), datetime.datetime(2018, 9, 16, 18, 0), datetime.datetime(2018, 9, 16, 19, 0), datetime.datetime(2018, 9, 16, 20, 0), datetime.datetime(2018, 9, 16, 21, 0), datetime.datetime(2018, 9, 16, 22, 0), datetime.datetime(2018, 9, 16, 23, 0), datetime.datetime(2018, 9, 17, 0, 0)] 

要转换为您提到的字符串格式:

[timestamp.to_pydatetime().strftime('%Y-%m-%d %H') for timestamp in solution] 
 
['2018-09-16 00', '2018-09-16 01', '2018-09-16 02', '2018-09-16 03', '2018-09-16 04', '2018-09-16 05', '2018-09-16 06', '2018-09-16 07', '2018-09-16 08', '2018-09-16 09', '2018-09-16 10', '2018-09-16 11', '2018-09-16 12', '2018-09-16 13', '2018-09-16 14', '2018-09-16 15', '2018-09-16 16', '2018-09-16 17', '2018-09-16 18', '2018-09-16 19', '2018-09-16 20', '2018-09-16 21', '2018-09-16 22', '2018-09-16 23', '2018-09-17 00']