Работа с датами в Python

Работа с датами в Python

Эта статья объясняет работу с датами в Python.

YouTube Video

Работа с датами в Python

Работа с датами в Python в основном использует модуль datetime. Этот модуль предоставляет различные классы и функции для работы с датами и временем.

Ниже приведены примеры базовой работы с датами с использованием модуля datetime.

Получение даты и времени

Вы можете получить текущие дату и время следующим образом. datetime.now() и datetime.today() возвращают почти одинаковый результат, но могут отличаться по обработке часовых поясов.

1from datetime import datetime
2
3# Get the current date and time
4now = datetime.now()
5print(f"Current date and time: {now}")
6
7# Get today's date only
8today = datetime.today()
9print(f"Today's date: {today.date()}")
  • Этот код получает и отображает текущие дату и время, а также только сегодняшнюю дату.

Создание конкретных дат и времени

Вы можете создать определённые дату и время следующим образом.

1from datetime import datetime
2
3# Create a specific date and time
4specific_date = datetime(2023, 11, 7, 10, 30, 45)
5print(f"Specified date and time: {specific_date}")
  • Этот код создаёт и отображает указанную дату и время (7 ноября 2023 года, 10:30:45).

Форматирование дат

Форматирование даты можно выполнить следующим образом.

1from datetime import datetime
2
3now = datetime.now()
4
5# Format the date
6formatted_date = now.strftime("%Y-%m-%d %H:%M:%S")
7print(f"Formatted date and time: {formatted_date}")
  • Этот код получает текущие дату и время, форматирует их в указанный формат с помощью strftime и отображает результат.

Строки формата даты

  • %Y: Год (4 цифры)
  • %m: Месяц (от 01 до 12)
  • %d: День (от 01 до 31)
  • %H: Час (от 00 до 23)
  • %M: Минута (от 00 до 59)
  • %S: Секунда (от 00 до 59)

Разбор строк даты

Вы можете преобразовать строку, представляющую дату, в объект datetime.

1from datetime import datetime
2
3date_string = "2023-11-07 10:30:45"
4parsed_date = datetime.strptime(date_string, "%Y-%m-%d %H:%M:%S")
5print(f"Parsed date and time: {parsed_date}")
  • Этот код преобразует дату, представленную в виде строки, в объект datetime с помощью strptime() и отображает его.

Арифметика дат

Арифметика с датами может быть выполнена следующим образом.

 1from datetime import datetime, timedelta
 2
 3now = datetime.now()
 4
 5# Date for one day later
 6tomorrow = now + timedelta(days=1)
 7print(f"Date for one day later: {tomorrow}")
 8
 9# Date for one week ago
10last_week = now - timedelta(weeks=1)
11print(f"Date for one week ago: {last_week}")
12
13# Time for two hours later
14in_two_hours = now + timedelta(hours=2)
15print(f"Time for two hours later: {in_two_hours}")
  • Этот код использует timedelta для добавления или вычитания дней и времени из текущих даты и времени, вычисляя и отображая дату и время на завтра, неделю назад и через два часа.

Работа с часовыми поясами

С помощью модуля datetime также можно работать с часовыми поясами.

 1from datetime import datetime, timezone, timedelta
 2
 3# Current UTC time
 4utc_now = datetime.now(timezone.utc)
 5print(f"Current UTC time: {utc_now}")
 6
 7# JST (UTC+9)
 8jst = timezone(timedelta(hours=9))
 9jst_now = datetime.now(jst)
10print(f"Current JST time: {jst_now}")
  • datetime по умолчанию возвращает 'наивное' значение (без информации о часовом поясе). Вы можете явно указывать часовой пояс, используя класс timezone или zoneinfo.

Классы date и time

С помощью модуля datetime можно работать только с датами или только со временем.

1from datetime import date, time
2
3d = date(2023, 11, 7)
4t = time(10, 30, 45)
5
6print(f"Date only: {d}")
7print(f"Time only: {t}")
  • Класс date работает только с датами, а класс time — только со временем.

Преобразование между datetime и timestamp

Возможна конвертация между UNIX-меткой времени и объектами datetime. Здесь UNIX-метка времени означает количество секунд, прошедших с 1 января 1970 года.

 1from datetime import datetime
 2
 3now = datetime.now()
 4
 5# datetime → timestamp
 6timestamp = now.timestamp()
 7print(f"Timestamp: {timestamp}")
 8
 9# timestamp → datetime
10restored = datetime.fromtimestamp(timestamp)
11print(f"Restored datetime: {restored}")
  • Этот код преобразует текущие дату и время в UNIX-метку времени, а затем с помощью функции fromtimestamp() преобразует её обратно в объект datetime.

Типичные ошибки

При использовании модуля datetime следует учитывать следующие моменты.

  • datetime.now() не учитывает часовые пояса, поэтому для интернационализации необходимо явно использовать timezone.utc.
  • Осторожно: не перепутайте %m (месяц) и %M (минута) в строках формата.

Резюме

Модуль datetime также предоставляет множество других функций для гибкой работы с датами и временем. Кроме того, доступны классы, такие как date, time и timedelta, специализированные для конкретных операций.

Использование других библиотек также позволяет выполнять более сложные операции с датами. Например, pandas специализируется на работе с временными рядами, а dateutil подходит для сложного разбора дат. Также библиотека arrow тоже полезна.

Вы можете следовать этой статье, используя Visual Studio Code на нашем YouTube-канале. Пожалуйста, также посмотрите наш YouTube-канал.

YouTube Video