Напишите программу "калькулятор дат",которая выводит календарь на любой год, подсчитывает количества дней, недель, месяцев и лет между двумя любыми датами
Калькулятор дней между двумя датами может использоваться в самых различных ситуациях. К примеру, хотите узнать, сколько дней вы прожили? Введите дату своего рождения и сегодняшнюю дату в калькулятор и вы узнаете результат. Предположим, что вы родились 2 декабря 1984 года, а сегодня 17 ноября 2015. Если ввести эти даты в калькулятор дней, то он выдаст ответ — вы прожили 11 307 дней. Кстати, узнать в какой день недели вы родились можно здесь.
Иногда интересно узнать сколько дней с памятного события. Все мы знаем, что Великая Отечественная война завершилась 9 мая 1945 года. С калькулятора легко определить, что с момента окончания ВОВ дней (учитывая, что сегодня 17 ноября 2015 года). Если же преобразовать эту цифру в годы и месяцы, то — 70 лет 6 месяцев и 8 дней.Можно также определить сколько длилась ВОВ. Если мы введем дату начала войны 22 июня 1941 года и дату ее окончания 9 мая 1945 года, то узнаем, что Отечественная война длилась 1417 дней. При этом началась она в воскресенье, а закончилась в среду.
Шаг 1: Получение дней в месяце
Для начала нам понадобится функция, которая будет возвращать количество дней в заданном месяце в заданном году. Это можно сделать с помощью следующего кода:
```python
def days_in_month(month, year):
if month == 2:
if year % 4 == 0 and (year % 100 != 0 or year % 400 == 0):
return 29
else:
return 28
elif month in [4, 6, 9, 11]:
return 30
else:
return 31
```
Шаг 2: Ввод и проверка дат
Теперь нужно написать функцию, которая будет запрашивать у пользователя даты и проверять их корректность. Для этого можно использовать следующий код:
```python
def input_date():
while True:
try:
date_str = input("Введите дату в формате ДД.ММ.ГГГГ: ")
day, month, year = [int(x) for x in date_str.split('.')]
if day < 1 or day > 31 or month < 1 or month > 12:
raise ValueError
else:
return day, month, year
except ValueError:
print("Неправильный формат даты. Попробуйте снова.")
```
Шаг 3: Расчет количества дней между двумя датами
Теперь нам нужно написать функцию, которая будет принимать на вход две даты и вычислять количество дней между ними. Мы будем использовать класс `date` из модуля `datetime` для обработки дат. Вот код для этой функции:
Шаг 4: Расчет количества недель, месяцев и лет
Наконец, нам нужно посчитать количество недель, месяцев и лет на основе полученного ранее количества дней. Вот код для этой функции:
```python
def calculate_time_period(days):
years = days // 365
months = (days % 365) // 30
weeks = ((days % 365) % 30) // 7
return years, months, weeks
```
Шаг 5: Вывод результатов
Теперь все, что нам нужно сделать, это вызвать наши функции в правильном порядке и вывести результаты на экран. Вот полный код программы:
```python
def days_in_month(month, year):
if month == 2:
if year % 4 == 0 and (year % 100 != 0 or year % 400 == 0):
return 29
else:
return 28
elif month in [4, 6, 9, 11]:
return 30
else:
return 31
def input_date():
while True:
try:
date_str = input("Введите дату в формате ДД.ММ.ГГГГ: ")
day, month, year = [int(x) for x in date_str.split('.')]
if day < 1 or day > 31 or month < 1 or month > 12:
raise ValueError
else:
return day, month, year
except ValueError:
print("Неправильный формат даты. Попробуйте снова.")
def calculate_time_period(days):
years = days // 365
months = (days % 365) // 30
weeks = ((days % 365) % 30) // 7
return years, months, weeks
# Главная часть программы
print("Добро пожаловать в калькулятор дат!")
print("Введите первую дату:")
date1 = input_date()
print("Введите вторую дату:")
date2 = input_date()
days = calculate_days(date1, date2)
years, months, weeks = calculate_time_period(days)
print(f"Между этими двумя датами прошло {days} дней.")
print(f"Это составляет примерно {years} лет, {months} месяцев и {weeks} недель.")
```
Эта программа запрашивает у пользователя две даты в формате ДД.ММ.ГГГГ, вычисляет количество дней между ними и выводит также количество лет, месяцев и недель, прошедших между этими датами. Количество дней в месяце рассчитывается отдельной функцией, а количество дней между датами рассчитывается с использованием класса `date` модуля `datetime`.
Калькулятор дней между двумя датами может использоваться в самых различных ситуациях. К примеру, хотите узнать, сколько дней вы прожили? Введите дату своего рождения и сегодняшнюю дату в калькулятор и вы узнаете результат. Предположим, что вы родились 2 декабря 1984 года, а сегодня 17 ноября 2015. Если ввести эти даты в калькулятор дней, то он выдаст ответ — вы прожили 11 307 дней. Кстати, узнать в какой день недели вы родились можно здесь.
Иногда интересно узнать сколько дней с памятного события. Все мы знаем, что Великая Отечественная война завершилась 9 мая 1945 года. С калькулятора легко определить, что с момента окончания ВОВ дней (учитывая, что сегодня 17 ноября 2015 года). Если же преобразовать эту цифру в годы и месяцы, то — 70 лет 6 месяцев и 8 дней.Можно также определить сколько длилась ВОВ. Если мы введем дату начала войны 22 июня 1941 года и дату ее окончания 9 мая 1945 года, то узнаем, что Отечественная война длилась 1417 дней. При этом началась она в воскресенье, а закончилась в среду.