Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from datetime import datetime, timedelta
- def get_name1_days(date):
- # Дни недели фиксированы, не зависят от даты
- return ["Monday", "Thursday", "Friday"]
- def get_name2_days(week_number, date):
- days = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]
- start_index = 1 + ((week_number - 1) % 7)
- return [days[(start_index + i) % 7] for i in range(3)]
- def get_name3_days(week_number, date):
- cycles = [
- ["Wednesday", "Thursday", "Sunday"],
- ["Monday", "Thursday", "Friday"],
- ["Monday", "Tuesday", "Friday", "Saturday"],
- ]
- return cycles[(week_number - 1) % 3]
- def find_common_days(start_date, weeks=12):
- week_days = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]
- start_datetime = datetime.strptime(start_date, "%Y-%m-%d")
- for week in range(1, weeks + 1):
- week_start = start_datetime + timedelta(weeks=week-1)
- days_dict = {day: (week_start + timedelta(days=i)) for i, day in enumerate(week_days)}
- days_name1 = set(get_name1_days(week_start))
- days_name2 = set(get_name2_days(week, week_start))
- days_name3 = set(get_name3_days(week, week_start))
- common_days = days_name1.intersection(days_name2).intersection(days_name3)
- if common_days:
- formatted_common_days = ', '.join(sorted(common_days, key=week_days.index))
- dates = [days_dict[day].strftime("%Y-%m-%d") for day in sorted(common_days, key=week_days.index)]
- print(f"Week {week} ({week_start.strftime('%Y-%m-%d')} to {(week_start + timedelta(days=6)).strftime('%Y-%m-%d')}): {formatted_common_days} - {'; '.join(dates)}")
- else:
- print(f"Week {week}: No common days.")
- # Желаемые даты и недели
- start_date = "2024-02-26"
- find_common_days(start_date)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement