Python - разделить период времени на несколько периодов фиксированной длины - PullRequest
0 голосов
/ 30 октября 2018

Учитывая две даты, я хотел бы создать список дат с фиксированной продолжительностью времени между ними, используя datetime , начиная с более поздней даты. Например, если заданы значения 01/01/2018 и 01/09/2018 и интервал времени в 2 месяца, результат будет:

[01/01/2018, 01/03/2018, 01/05/2018, 01/07/2018, 01/09/2018]

Для интервала 3 месяца:

[01/03/2018, 01/06/2018, 01/09/2018]

Я не могу просто вычесть месяцы с помощью метода .replace для объекта datetime , поскольку переход с 31-дневного месяца на 30-дневный месяц вернул бы ошибку.

Ответы [ 2 ]

0 голосов
/ 30 октября 2018

Вы указали datetime , но если вам интересно,
time.localtime объект может быть разбит следующим образом:

import time

secSinceEpoch = time.time()
currentTime = time.localtime(secSinceEpoch)
month = currentTime.tm_mon
day = currentTime.tm_mday
year = currentTime.tm_year
hour = currentTime.tm_hour
min = currentTime.tm_min
sec = currentTime.tm_sec

Отсюда вы можете выполнять операции над определенными частями даты / времени ...

0 голосов
/ 30 октября 2018

Я думаю, relativedeleta модуль может помочь вам в этом - pip install python-dateutil

from dateutil.relativedelta import *
import datetime
date1 = datetime.datetime.strptime('01/01/2018', "%d/%m/%Y").date()
date2 = datetime.datetime.strptime('01/09/2018', "%d/%m/%Y").date()
f = [(date1 + relativedelta(months=i)).strftime("%d/%m/%Y") for i in range(date1.month, date2.month,2)]

Результат будет - ['01 / 02/2018 ', '01 / 04/2018', '01 / 06/2018 ', '01 / 08/2018']

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...