Привет, мир!
Работа с датами и временем в Python может поначалу немного сбивать с толку, но как только вы освоитесь, он может стать мощным инструментом для обработки данных, основанных на времени, и манипулирования ими.
В Python даты и время представлены с помощью встроенного модуля datetime
. Этот модуль предоставляет классы для работы с датами, временем и датой и временем, а также множество функций для их форматирования и управления ими.
Вот несколько основных примеров того, как работать с датами и временем в Python:
Создание даты
Чтобы создать дату, вы можете использовать класс date
из модуля datetime
. Класс date
принимает три аргумента: год, месяц и день.
from datetime import date # Create a date for July 4th, 2021 fourth_of_july = date(2021, 7, 4) print(fourth_of_july) # Output: 2021-07-04
Создание времени
Чтобы создать время, вы можете использовать класс time
из модуля datetime
. Класс time
принимает четыре аргумента: час, минуту, секунду и микросекунду.
from datetime import time # Create a time for 6:30pm six_thirty = time(18, 30) print(six_thirty) # Output: 18:30:00
Создание даты и времени
Чтобы создать дату и время, вы можете использовать класс datetime
из модуля datetime
. Класс datetime
принимает шесть аргументов: год, месяц, день, час, минута и секунда.
from datetime import datetime # Create a datetime for July 4th, 2021 at 6:30pm fourth_of_july_630pm = datetime(2021, 7, 4, 18, 30) print(fourth_of_july_630pm) # Output: 2021-07-04 18:30:00
Форматирование даты и времени
Модуль datetime
также предоставляет множество функций для форматирования дат и времени в виде строк. Например, вы можете использовать функцию strftime
для форматирования объекта datetime
в виде строки определенным образом.
from datetime import datetime # Create a datetime object dt = datetime(2022, 1, 1, 12, 0, 0) # Format the datetime as a string using various format codes: # Output: "2022-01-01" print(dt.strftime("%Y-%m-%d")) # Output: "Saturday, January 1st" print(dt.strftime("%A, %B %dst")) # Output: "12:00 PM" print(dt.strftime("%I:%M %p")) # Output: "12:00:00 PM" print(dt.strftime("%I:%M:%S %p")) # Output: "12:00:00" print(dt.strftime("%H:%M:%S")) # Output: "2022-01-01 12:00:00" print(dt.strftime("%Y-%m-%d %H:%M:%S"))
Полный список кодов форматов можно найти в документации к функции strftime
: https://docs.python.org/3/library/datetime.html#strftime-strptime-behavior
Локализация
Функция strftime
также поддерживает локализацию, которая позволяет вам форматировать дату и время, используя соглашения определенного языка или региона. Чтобы использовать локализацию, вы можете передать объект Locale
в качестве аргумента locale
функции strftime
.
Например, чтобы отформатировать дату на французском языке, вы можете использовать следующий код:
import locale # Set the locale to French locale.setlocale(locale.LC_ALL, 'fr_FR') # Output: "samedi 1er janvier 2022" print(dt.strftime("%A %d %B %Y"))
Полный список кодов локалей можно найти в документации к модулю locale
: https://docs.python.org/3/library/locale.html#locale-codes
Разбор дат и времени из строк
Вы также можете использовать модуль datetime
для анализа даты и времени из строк. Например, вы можете использовать функцию strptime
для преобразования строки в объект datetime
.
from datetime import datetime # Parse a date string in the format "YYYY-MM-DD" date_string = "2022-01-01" parsed_date = datetime.strptime(date_string, "%Y-%m-%d").date() print(parsed_date) # Output: 2022-01-01 # Parse a time string in the format "HH:MM:SS" time_string = "12:00:00" parsed_time = datetime.strptime(time_string, "%H:%M:%S").time() print(parsed_time) # Output: 12:00:00 # Parse a datetime string in the format "YYYY-MM-DD HH:MM:SS" datetime_string = "2022-01-01 12:00:00" parsed_datetime = datetime.strptime(datetime_string, "%Y-%m-%d %H:%M:%S") print(parsed_datetime) # Output: 2022-01-01 12:00:00
Функция strptime
принимает два аргумента: строку для анализа и строку формата, определяющую структуру входной строки. Строка формата использует те же коды формата, что и функция strftime
, которые вы можете найти в документации: https://docs.python.org/3/library/datetime.html#strftime-strptime-behavior
Вы можете использовать функцию strptime
для анализа даты и времени в любом формате, если вы укажете правильную строку формата.
Альтернативы
В дополнение к встроенному модулю datetime
существует несколько альтернативных пакетов для управления датами и временем в Python. Вот несколько популярных вариантов:
dateutil
Пакет dateutil
является мощным расширением модуля datetime
с дополнительными функциями для анализа даты и времени из строк, обработки часовых поясов и многого другого. Вы можете установить dateutil
с помощью pip
:
pip install python-dateutil
Вот пример использования dateutil
для анализа строки даты:
from dateutil import parser # Parse a date string date_string = "2022-01-01" parsed_date = parser.parse(date_string) print(parsed_date) # Output: 2022-01-01 00:00:00
маятник
Пакет pendulum
является заменой модуля datetime
с дополнительными функциями для работы с датами и временем, такими как поддержка часовых поясов и более интуитивно понятные имена методов. Вы можете установить pendulum
с помощью pip
:
pip install pendulum
Вот пример использования pendulum
для создания даты:
import pendulum # Create a date dt = pendulum.datetime(2022, 1, 1) print(dt) # Output: 2022-01-01T00:00:00+00:00
стрелка
Пакет arrow
— это еще одна альтернатива модулю datetime
с упором на простоту и удобство использования. Вы можете установить arrow
с помощью pip
:
pip install arrow
Вот пример использования arrow
для создания даты:
import arrow # Create a date dt = arrow.Arrow(2022, 1, 1) print(dt) # Output: 2022-01-01T00:00:00+00:00
Заключение
Существует множество вариантов работы с датами и временем в Python, и какой из них вы выберете, будет зависеть от ваших конкретных потребностей и предпочтений. Встроенный модуль datetime
— хороший выбор для большинства основных случаев использования, но если вам нужны более продвинутые функции, такие как поддержка часового пояса или более простой анализ дат из строк, вы можете рассмотреть один из альтернативных пакетов, упомянутых выше.
Пожертвования и прочее
Если вы хотите поддержать меня, рассмотрите возможность подписки на Medium, используя мою реферальную ссылку:
Если вы не хотите активировать план подписки, но все же хотите поддержать меня, подумайте о покупке моей музыки на Bandcamp:
Другие URL-адреса:
Личный сайт: https://inzaniak.github.io
Социальные ссылки: https://inzaniak.github.io/links.html
Linkedin: https://www.linkedin .com/in/umberto-grando-a8527b150/
Дополнительные материалы на PlainEnglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter, LinkedIn, YouTube и Discord .
Заинтересованы в масштабировании запуска вашего программного обеспечения? Ознакомьтесь с разделом Схема.