Як обробляти дати та час у Python за допомогою datetime

Обробка дат і часу є звичайним завданням у програмуванні, і Python надає вбудований модуль під назвою datetime для роботи з датами та часом. Цей модуль надає класи для маніпулювання датами, часом і часовими інтервалами, що полегшує виконання арифметики дат, форматування дат і керування часовими поясами. У цій статті ми розглянемо, як використовувати модуль datetime для ефективної обробки дат і часу в Python.

Початок роботи з datetime

Модуль datetime надає кілька класів, наприклад datetime.date, datetime.time, datetime.datetime, datetime. timedelta та datetime.tzinfo. Ці класи дозволяють нам працювати з датами, часом і інтервалами часу.

Щоб почати використовувати модуль datetime, його потрібно імпортувати:

import datetime

Робота з датами

Ви можете створити об’єкт дати за допомогою класу date. Для цього потрібні три параметри: рік, місяць і день.

from datetime import date

# Create a date object
my_date = date(2023, 9, 4)
print(my_date)  # Output: 2023-09-04

Ви також можете отримати доступ до окремих компонентів дати, таких як рік, місяць і день:

print(my_date.year)   # Output: 2023
print(my_date.month)  # Output: 9
print(my_date.day)    # Output: 4

Робота з Times

Клас time дозволяє створити об’єкт часу. Для цього потрібні години, хвилини, секунди та мікросекунди (необов’язково).

from datetime import time

# Create a time object
my_time = time(14, 30, 45)
print(my_time)  # Output: 14:30:45

Подібно до дат, ви можете отримати доступ до окремих компонентів об’єкта часу:

print(my_time.hour)   # Output: 14
print(my_time.minute) # Output: 30
print(my_time.second) # Output: 45

Поєднання дати й часу з datetime

Клас datetime поєднує і дату, і час в один об’єкт. Ви можете створити об’єкт datetime, передавши рік, місяць, день, годину, хвилину, секунду та мікросекунду (необов’язково).

from datetime import datetime

# Create a datetime object
my_datetime = datetime(2023, 9, 4, 14, 30, 45)
print(my_datetime)  # Output: 2023-09-04 14:30:45

Ви можете отримати доступ до компонентів дати та часу об’єкта datetime:

print(my_datetime.date())  # Output: 2023-09-04
print(my_datetime.time())  # Output: 14:30:45

Отримання поточної дати та часу

Модуль datetime надає зручні методи отримання поточної дати, часу або обох:

# Current date
today = date.today()
print(today)  # Output: (current date)

# Current date and time
now = datetime.now()
print(now)  # Output: (current date and time)

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

Клас timedelta представляє тривалість, яка є різницею між двома датами або часом. Це дозволяє виконувати арифметику дати, наприклад додавати або віднімати дні від дати.

from datetime import timedelta

# Create a timedelta object
delta = timedelta(days=7)

# Add 7 days to the current date
future_date = today + delta
print(future_date)

Ви також можете обчислити різницю між двома датами:

# Calculate the difference between two dates
date1 = date(2023, 9, 4)
date2 = date(2023, 9, 11)
difference = date2 - date1
print(difference.days)  # Output: 7

Форматування дат і часу

Метод strftime() дозволяє форматувати дату або час у рядок. Цей метод використовує код формату, щоб визначити потрібний формат:

# Format a date object
formatted_date = today.strftime('%B %d, %Y')
print(formatted_date)  # Output: September 04, 2023

Загальні коди формату включають:

  • %Y - рік (наприклад, 2023)
  • %m - місяць як десяткове число з доповненням нуля (наприклад, 09)
  • %d – день місяця як десяткове число з доповненням нуля (наприклад, 04)
  • %H - година (24-годинний годинник) як десяткове число з доповненням нуля (наприклад, 14)
  • %M - хвилина як десяткове число з доповненням нуля (наприклад, 30)
  • %S – секунда як десяткове число з доповненням нуля (наприклад, 45)

Розбір дат із рядків

Метод strptime() дозволяє конвертувати рядок в об’єкт datetime, враховуючи формат рядка дати:

# Parse a date from a string
date_str = '2023-09-04'
parsed_date = datetime.strptime(date_str, '%Y-%m-%d')
print(parsed_date)

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

Модуль datetime підтримує об’єкти datetime з урахуванням часового поясу за допомогою бібліотеки pytz. Для роботи з часовими поясами необхідно встановити pytz:

pip install pytz

Потім ви можете призначити часовий пояс об’єкту datetime:

from datetime import datetime
import pytz

# Set timezone to UTC
utc_zone = pytz.utc
now_utc = datetime.now(utc_zone)
print(now_utc)

Висновок

Модуль datetime у Python надає потужні інструменти для обробки дат і часу, включаючи створення, форматування, аналіз і виконання арифметичних дій з об’єктами дати й часу. Незалежно від того, чи потрібно вам маніпулювати датами, працювати з часовими поясами чи форматувати дати й час для відображення, модуль datetime допоможе вам.