Список дней и часов в 2D-списке, используя python - PullRequest
0 голосов
/ 18 февраля 2020

Я хочу перечислить все даты и часы в промежутке от 2 до указанного времени, используя библиотеку dateutil.

Пример: input: date_from= 02/16/2020:00:00:00, date_to = 02/17/2020:00:00:00

Я хочу получить список со следующей структурой

02/16/2020, 02/16/2020:00:00:00

02/16/2020, 02/16/2020:01:00:00

02/16/2020, 02/16/2020:02:00:00

... till hour 23

02/17/2020, 02/17/2020:00:00:00

02/17/2020, 02/17/2020:01:00:00

02/17/2020, 02/17/2020:02:00:00

.... till hour 23

Я попробовал приведенный ниже код, и кажется, что логика c должна быть изменена.

days = [[], []]
for day in rrule.rrule(rrule.DAILY, dtstart=date_from, until=date_to):
    for hour in rrule.rrule(rrule.HOURLY, dtstart=date_from, until=date_to):
        days.append(str(day))

Ответы [ 2 ]

0 голосов
/ 18 февраля 2020

Как двумерный массив даты и времени:

from datetime import datetime as dt
from datetime import timedelta

date_from= '02/16/2020 00:00:00'
date_to = '02/17/2020 00:00:00'

date_from = dt.strptime(date_from, '%m/%d/%Y %H:%M:%S')
date_to = dt.strptime(date_to, '%m/%d/%Y %H:%M:%S')
new_date = date_from
all_dates = []
while new_date < date_to:
    date_only = dt.strftime(new_date,'%m/%d/%Y')
    date_and_time = dt.strftime(new_date,'%m/%d/%Y %H:%M:%S')
    all_dates.append([date_only,date_and_time])
    new_date = new_date + timedelta(minutes=60)  

print(all_dates)

, вывод:

[['02/16/2020', '02/16/2020 00:00:00'], ['02/16/2020', '02/16/2020 01:00:00'], ['02/16/2020', '02/16/2020 02:00:00'], ['02/16/2020', '02/16/2020 03:00:00'], ['02/16/2020', '02/16/2020 04:00:00'], ['02/16/2020', '02/16/2020 05:00:00'], ['02/16/2020', '02/16/2020 06:00:00'], ['02/16/2020', '02/16/2020 07:00:00'], ['02/16/2020', '02/16/2020 08:00:00'], ['02/16/2020', '02/16/2020 09:00:00'], ['02/16/2020', '02/16/2020 10:00:00'], ['02/16/2020', '02/16/2020 11:00:00'], ['02/16/2020', '02/16/2020 12:00:00'], ['02/16/2020', '02/16/2020 13:00:00'], ['02/16/2020', '02/16/2020 14:00:00'], ['02/16/2020', '02/16/2020 15:00:00'], ['02/16/2020', '02/16/2020 16:00:00'], ['02/16/2020', '02/16/2020 17:00:00'], ['02/16/2020', '02/16/2020 18:00:00'], ['02/16/2020', '02/16/2020 19:00:00'], ['02/16/2020', '02/16/2020 20:00:00'], ['02/16/2020', '02/16/2020 21:00:00'], ['02/16/2020', '02/16/2020 22:00:00'], ['02/16/2020', '02/16/2020 23:00:00']]

Это то, что вы хотите?

0 голосов
/ 18 февраля 2020
from datetime import datetime as dt
from datetime import timedelta

date_from= '02/16/2020 00:00:00'
date_to = '02/17/2020 00:00:00'

date_from = dt.strptime(date_from, '%m/%d/%Y %H:%M:%S')
date_to = dt.strptime(date_to, '%m/%d/%Y %H:%M:%S')
new_date = date_from
while new_date < date_to:
    print(new_date)
    new_date = new_date + timedelta(minutes=60)  

вывод:

2020-02-16 00:00:00
2020-02-16 01:00:00
2020-02-16 02:00:00
2020-02-16 03:00:00
2020-02-16 04:00:00
2020-02-16 05:00:00
2020-02-16 06:00:00
2020-02-16 07:00:00
2020-02-16 08:00:00
2020-02-16 09:00:00
2020-02-16 10:00:00
2020-02-16 11:00:00
2020-02-16 12:00:00
2020-02-16 13:00:00
2020-02-16 14:00:00
2020-02-16 15:00:00
2020-02-16 16:00:00
2020-02-16 17:00:00
2020-02-16 18:00:00
2020-02-16 19:00:00
2020-02-16 20:00:00
2020-02-16 21:00:00
2020-02-16 22:00:00
2020-02-16 23:00:00
...