Если я установлю дату следующим образом:
from datetime import datetime
from dateutil import relativedelta
class count_month_range:
'Get the month range between 2 specified date based on the timezone'
def __init__(self, start_date, end_date, timezone):
self.start_date = start_date
self.end_date = end_date
self.timezone = timezone
def count(self):
start_date = datetime.strptime(str(self.start_date), '%Y-%m-%dT%H:%M:%S'+self.timezone)
end_date = datetime.strptime(str(self.end_date), '%Y-%m-%dT%H:%M:%S'+self.timezone)
r = relativedelta.relativedelta(end_date, start_date)
print (r.months)
return r.months
month_range = count_month_range("2018-12-01T00:00:00Z", "2019-12-01T00:00:00Z", "Z")
test = month_range.count()
print(test)
Он вернет неожиданный результат следующим образом:
0
0
Я ожидаю, что он вернется 12
Я пытаюсь получить диапазон месяцев.
Например: 2018-12-01 до 2019-10-31 даст результат 10 месяцев.
У меня есть следующий тест на питоне.py файл:
from datetime import datetime
from dateutil import relativedelta
class count_month_range:
'Get the month range between 2 specified date based on the timezone'
def __init__(self, start_date, end_date, timezone):
self.start_date = start_date
self.end_date = end_date
self.timezone = timezone
def count(self):
start_date = datetime.strptime(str(self.start_date), '%Y-%m-%dT%H:%M:%S'+self.timezone)
end_date = datetime.strptime(str(self.end_date), '%Y-%m-%dT%H:%M:%S'+self.timezone)
r = relativedelta.relativedelta(end_date, start_date)
print (r.months)
return r.months
month_range = count_month_range("2018-12-01T00:00:00Z", "2019-10-31T00:00:00Z", "Z")
test = month_range.count()
print(test)
При запуске файла test.py будет возвращено следующее
10
10
И это ожидаемый результат.
Если 2018-12-01 до 2019-10-31 возвращает 10 месяцев, что является правильным, я ожидаю того же правильного расчета при вводе: 2018-12-01 до 2019-12-01.
Такая проблема возникает всякий раз, когда я ввожуодин и тот же месяц в start_date и end_date независимо от года.Что я должен сделать, чтобы все заработало как положено?Ваша помощь очень ценится.
Заранее спасибо.