Привет, мир!

Работа с датами и временем в 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:

https://inzaniak.bandcamp.com

Другие 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 .

Заинтересованы в масштабировании запуска вашего программного обеспечения? Ознакомьтесь с разделом Схема.