Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python中添加日期和小时_Python_Date - Fatal编程技术网

如何在Python中添加日期和小时

如何在Python中添加日期和小时,python,date,Python,Date,假设我有两次约会。 如何获取两个日期之间的所有中间日期和时间(从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-1

假设我有两次约会。 如何获取两个日期之间的所有中间日期和时间(从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'

使用熊猫,它是一个单一的班轮:

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')
如果要从时间戳转换回日期时间,请执行以下操作:

[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']

使用熊猫,它是一个单一的班轮:

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')
如果要从时间戳转换回日期时间,请执行以下操作:

[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']
纯Python:

import itertools
from datetime import datetime,timedelta

date_max = datetime.today()
date_min = date_max - timedelta(hours=2)
n_hours = (date_max - date_min).total_seconds() / 3600
[date_min + timedelta(hours=x) for x in itertools.takewhile(lambda h: h <= n_hours, itertools.count())]
纯Python:

import itertools
from datetime import datetime,timedelta

date_max = datetime.today()
date_min = date_max - timedelta(hours=2)
n_hours = (date_max - date_min).total_seconds() / 3600
[date_min + timedelta(hours=x) for x in itertools.takewhile(lambda h: h <= n_hours, itertools.count())]
这将有助于:

date = datetime.today()-timedelta(days=1)
while date < datetime.today():
    date = date + timedelta(hours=1)
    print date.strftime('%Y-%m-%d %H')
您还可以指定从哪个小时开始:

date = datetime.today().replace(hour=0, minute=0, second=0)-timedelta(days=1)
这将有助于:

date = datetime.today()-timedelta(days=1)
while date < datetime.today():
    date = date + timedelta(hours=1)
    print date.strftime('%Y-%m-%d %H')
您还可以指定从哪个小时开始:

date = datetime.today().replace(hour=0, minute=0, second=0)-timedelta(days=1)

那么您要查找的是
date\u min
date\u max
之间的每一天,以及每天的每一小时?听起来你至少需要一个
循环。您是否希望完全在datetime中完成此操作?或者像下面这样使用
pandas
的解决方案有效吗?那么您要查找
date\u min
date\u max
之间的每一天,以及每一天的每一小时?听起来你至少需要一个
循环。您是否希望完全在datetime中完成此操作?或者像下面这样使用
pandas
的解决方案是否有效?如果我想传递变量date\u min=(datetime.today()-timedelta(1)).strftime(“%Y-%m-%d”)+“00”date\u max=datetime.today().strftime(“%Y-%m-%d”)+“00”而date\u min