2024-04-20 13:28:57 发布
网友
my_date = datetime.now(pytz.timezone('US/Central'))
所以,我有一个datemy_date,我想检查这个datetime对象是否是从9月2日开始的一周的交替星期二。因此,如果my_date是第4个,它应该返回true、11th false、18th true等。。怎么做
my_date
下面是一个解决方案,它计算给定月份的第一个星期二,并使用datetime.isocalendar获取周数并检查“alternate”
from datetime import datetime, date, timedelta def first_tuesday_of_month(year, month): first_day_of_month = datetime(year, month, 1) days_diff = ((1 - first_day_of_month.weekday()) + 7) % 7 first_tuesday_of_month = first_day_of_month + timedelta(days=days_diff) return first_tuesday_of_month def is_alternate_tuesday(starting_day, date_to_check): # First check if the date is a Tuesday after the starting_day if date_to_check < starting_day or date_to_check.weekday() != 1: return False # Ok, let's check if it's an "alternate week" base_week = starting_day.isocalendar()[1] checked_week = week_to_check = date_to_check.isocalendar()[1] return (checked_week - base_week) % 2 == 0 base_day = first_tuesday_of_month(2018, 9) assert is_alternate_tuesday(base_day , datetime(2018, 9, 4)) is True assert is_alternate_tuesday(starting_day, datetime(2018, 9, 11)) is False assert is_alternate_tuesday(starting_day, datetime(2018, 9, 18)) is True
一种方法是
(test_date-datetime.date(2018, 9, 4)).days %14 ==0
如果在同一年内,你也可以使用
(test_date.isocalendar()[1]- datetime.date(2018, 9, 4).isocalendar()[1] %2) == 0 and test_date.isocalendar()[2]==2
下面是一个解决方案,它计算给定月份的第一个星期二,并使用datetime.isocalendar获取周数并检查“alternate”
一种方法是
如果在同一年内,你也可以使用
相关问题 更多 >
编程相关推荐