2014-11-15 2 views
1

У меня есть только month и year, и я хочу, чтобы сравнить, если это периода (целый месяц) находится между двумя datetime объектами. Например, если у меня есть эти две даты: 2013проверки диапазон дат только месяц и год в Python

min_post_date = 2013-03-07 00:00:00 
max_post_date = 2014-01-01 00:00:00 

И у меня только год и месяц 03, он должен дать мне True, 02-2013 должен дать False, 04-2014 должен дать False и конечно 08-2013 должны дать True.

Что вы посоветуете?

Спасибо.

+0

Какой формат дат тестирования? например '08-2013' – Kasramvd

+0

У меня только месяц и год, я мог бы адаптировать формат. – eLRuLL

ответ

2

Вы можете сначала вычислить две даты в начале и в конце вашего месяца:

from calendar import monthrange 
from datetime import date, datetime 

begin = date(year, month, 1) 
end = date(year, month, monthrange(year, month)[1]) 

Тогда вы можете просто проверить, что либо begin или end падение в пределах своего диапазона:

(min_post_date <= begin <= max_post_date) or (min_post_date <= end <= max_post_date) 

Предполагается, что вы проанализировали min_post_date и max_post_date с:

min_post_date = datetime.strptime(min_post_date.split()[0], "%Y-%m-%d").date() 

и аналогичным образом для max_post_date.

Смежные вопросы