В этой статье я приведу несколько способов как можно получить последний день месяца.
- С помощью модуля календаря
- Функция Calendar.mountrange()
- С помощью replace() и timedelta()
- Модуль dateutil
- Модуль datetime
- Заключение
С помощью модуля календаря
Python предоставляет встроенный модуль календаря, который обрабатывает операции, связанные с календарем.
Это позволяет нам получать выходные данные календаря, как программа, и предоставляет дополнительные полезные функции, связанные с календарем.
Полный код Python:
import calendar from datetime import datetime input_date = datetime(2024, 1, 16) print("The original date is:", input_date.date()) result_date = calendar.monthrange(input_date.year, input_date.month) day = result_date[1] print(f"Last date of month is: {input_date.year}-{input_date.month}-{day}")
Эти строки кода создают объект datetime, представляющий 16 января 2024 года. Затем он печатает исходную дату, представленную input_date_object.
input_date = datetime(2024, 1, 16) print("The original date is:", input_date.date())
Здесь я использовал функцию monthrange() из модуля календаря в Python, чтобы получить кортеж, содержащий день недели, в котором начинается месяц, и количество дней в месяце. Затем он извлекает количество дней в месяце из result_date.
result_date = calendar.monthrange(input_date.year, input_date.month) day = result_date[1] print(f"Last date of month is: {input_date.year}-{input_date.month}-{day}")
Выход:
The original date is: 2024-01-16 Last date of month is: 2024-1-31
Функция Calendar.mountrange()
В Python функция Monthrange() возвращает кортеж, содержащий первый день недели месяца и общее количество дней в месяце.
Ниже приведен исходный код Python для получения последнего дня месяца с помощью Calendar.mountrange().
import calendar import datetime entered_date = datetime.date(2023,2,18) last_day = entered_date.replace(day = calendar.monthrange(entered_date.year, entered_date.month)[1]) print("The last day of the month:",last_day)
Выход:
The last day of the month: 2023-02-28
Обратитесь к снимку экрана ниже:
С помощью replace() и timedelta()
Если вы не хотите импортировать модуль календаря, вы можете использовать комбинацию методов replace() и timedelta() модуля datetime в Python.
Метод replace() в Python заменяет содержимое объекта datetime заданными параметрами. В Python метод timedelta() представляет продолжительность, которая представляет собой разницу между двумя датами, временем или экземплярами datetime.
Полный исходный код:
from datetime import datetime, timedelta taken_date = datetime(2024, 2, 4) print("The original date is:", taken_date.date()) next_month = taken_date.replace(day=28) + timedelta(days=4) output = next_month - timedelta(days=next_month.day) print(f"Last date of month is:", output.date())
Я использую функцию replace(), поэтому она сначала заменит день заданной даты на 28-й день месяца, а затем добавит 4 дня, чтобы получить следующий месяц, чтобы гарантировать, что даже если в текущем месяце 28 дней , результирующая дата будет в следующем месяце.
Затем он вычисляет последнее число месяца, вычитая количество дней, равное текущему дню месяца в Python.
next_month = taken_date.replace(day=28) + timedelta(days=4) output = next_month - timedelta(days=next_month.day)
Выход:
The original date is: 2024-02-04 Last date of month is: 2024-02-29
Обратитесь к снимку экрана ниже, на нем представлены выходные данные указанной выше программы Python.
Модуль dateutil
В Python модуль dateutil используется для получения или планирования данных в определенное время или для ввода данных с отметкой времени получения.
Полная программа Python:
from datetime import datetime from dateutil.relativedelta import relativedelta input_data = datetime(2202, 9, 13) print("The original date is:", input_data.date()) result = input_data + relativedelta(day=31) print(f"Last date of month is:", result.date())
Здесь эта строка кода Python использует функциюrelativedelta из модуля dateutil для добавления или вычитания определенных компонентов даты без выполнения вычислений вручную.
result = input_data + relativedelta(day=31)
Выход:
The original date is: 2202-09-13 Last date of month is: 2202-09-30
Вы можете обратиться к изображению ниже, чтобы увидеть выходные данные программы Python, чтобы получить последний день месяца с помощью dateutil.
Модуль datetime
В Python дата и время не являются собственными типами данных, но модуль с именем datetime в Python можно импортировать для работы с датой и временем.
Полный код:
import datetime def last_day_month(year, month, day): input_date = datetime.date(year + int(month/12), month%12+1, 1)-datetime.timedelta(days=1) return input_date print(last_day_month(2024,1,8))
Он вычисляет последний день данного месяца, создавая объект даты, представляющий первый день следующего месяца, а затем вычитая из него один день.
input_date = datetime.date(year + int(month/12), month%12+1, 1)-datetime.timedelta(days=1)
Выход:
2024-01-31
Ниже приведен скриншот. Вы можете увидеть выходные данные программы Python, чтобы получить последний день месяца, используя модуль datetime.
Заключение
В этом посте о Python я рассмотрел различные методы с наглядными примерами написания программы Python для получения последнего дня месяца, например, импорт модуля календаря с использованием Calendar.monthrange(), использования replace() и timedelta(), использования dateutil. модуль, используя модуль datetime.