9.1 Робота з датою і часом
Програмістам дуже часто доводиться у своїх програмах працювати з датами і часом. Тому нічого дивного в тому, що в Python на ці випадки є дві стандартні бібліотеки datetime і time.
Бібліотека datetime є частиною стандартної бібліотеки Python і надає класи для роботи з датами і часом. Вона дозволяє створювати, маніпулювати і форматувати дати і час, а також виконувати арифметичні операції з ними.
Основні класи бібліотеки datetime
Клас datetime.date
Цей клас представляє дату (рік, місяць, день) без часу. Він корисний для роботи з календарними датами.
Приклад використання:
import datetime
# Створення об'єкта дати
d = datetime.date(2023, 5, 24)
print(d) # Вивід: 2023-05-24
# Отримання поточної дати
today = datetime.date.today()
print(today)
# Доступ до атрибутів року, місяця і дня
print(d.year) # Вивід: 2023
print(d.month) # Вивід: 5
print(d.day) # Вивід: 24
Клас datetime.time
Цей клас представляє час (години, хвилини, секунди, мікросекунди) без дати. Він корисний для роботи з часом доби.
Приклад використання:
import datetime
# Створення об'єкта часу
t = datetime.time(14, 30, 45)
print(t) # Вивід: 14:30:45
# Доступ до атрибутів годин, хвилин і секунд
print(t.hour) # Вивід: 14
print(t.minute) # Вивід: 30
print(t.second) # Вивід: 45
Клас datetime.datetime
Цей клас об'єднує дату і час (рік, місяць, день, години, хвилини, секунди, мікросекунди). Він корисний для роботи з конкретними моментами часу.
Приклад використання:
import datetime
# Створення об'єкта дати і часу
dt = datetime.datetime(2023, 5, 24, 14, 30, 45)
print(dt) # Вивід: 2023-05-24 14:30:45
# Отримання поточної дати і часу
now = datetime.datetime.now()
print(now)
# Доступ до атрибутів дати і часу
print(dt.year) # Вивід: 2023
print(dt.month) # Вивід: 5
print(dt.day) # Вивід: 24
print(dt.hour) # Вивід: 14
print(dt.minute) # Вивід: 30
print(dt.second) # Вивід: 45
Клас datetime.timedelta
Цей клас представляє різницю між двома моментами часу, виражену в днях, секундах і мікросекундах. Він корисний для виконання арифметичних операцій з датами і часом.
Приклад використання:
import datetime
# Створення об'єкта timedelta
delta = datetime.timedelta(days=10, hours=5, minutes=30)
print(delta) # Вивід: 10 days, 5:30:00
# Додавання timedelta до дати
dt = datetime.datetime(2023, 5, 24, 14, 30)
new_dt = dt + delta
print(new_dt) # Вивід: 2023-06-03 20:00:00
# Віднімання timedelta з дати
earlier_dt = dt - delta
print(earlier_dt) # Вивід: 2023-05-14 09:00:00
9.2 Форматування і парсинг дат і часу
Нам часто потрібно не просто працювати з датою, а перетворювати її в рядок певного виду. Зворотній процес, коли ми перетворюємо рядок в об'єкт, зазвичай називається парсингом. Для цих операцій в Python також є свої класи і методи:
Метод strftime()
Метод strftime() використовується для форматування об'єктів datetime в рядок за заданим форматом.
Приклад використання:
import datetime
dt = datetime.datetime(2023, 5, 24, 14, 30, 45)
# Форматування дати і часу
formatted_dt = dt.strftime("%Y-%m-%d %H:%M:%S")
print(formatted_dt) # Вивід: 2023-05-24 14:30:45
# Форматування тільки дати
formatted_date = dt.strftime("%d-%m-%Y")
print(formatted_date) # Вивід: 24-05-2023
# Форматування тільки часу
formatted_time = dt.strftime("%H:%M:%S")
print(formatted_time) # Вивід: 14:30:45
Метод strptime()
Метод strptime() використовується для парсингу рядків в об'єкти datetime за заданим форматом.
Приклад використання:
import datetime
# Парсинг рядка в об'єкт datetime
date_str = "24-05-2023 14:30:45"
dt = datetime.datetime.strptime(date_str, "%d-%m-%Y %H:%M:%S")
print(dt) # Вивід: 2023-05-24 14:30:45
# Парсинг рядка в об'єкт date
date_str = "24-05-2023"
d = datetime.datetime.strptime(date_str, "%d-%m-%Y").date()
print(d) # Вивід: 2023-05-24
# Парсинг рядка в об'єкт time
time_str = "14:30:45"
t = datetime.datetime.strptime(time_str, "%H:%M:%S").time()
print(t) # Вивід: 14:30:45
9.3 Робота з часовими поясами
Як показує практика, нашими сервісами користуються люди з усього світу, і, на жаль, вони живуть в різних країнах і у них різні часові пояси (timezone). Тому вам як програмісту потрібно вміти працювати з ними теж.
Ну і звісно в Python є клас і на цей випадок:
Клас timezone
Клас timezone з модуля datetime дозволяє працювати з часовими поясами.
import datetime
# Створення об'єкта datetime з часовим поясом UTC
utc_dt = datetime.datetime(2023, 5, 24, 14, 30, 45, tzinfo=datetime.timezone.utc)
print(utc_dt) # Вивід: 2023-05-24 14:30:45+00:00
# Конвертація в інший часовий пояс
tokyo_tz = datetime.timezone(datetime.timedelta(hours=9))
tokyo_dt = utc_dt.astimezone(tokyo_tz)
print(tokyo_dt) # Вивід: 2023-05-24 23:30:45+09:00
Ми розглянули бібліотеку datetime дуже оглядово, я б навіть сказав поверхнево. У майбутньому ми ще раз повернемося до неї і будемо вчитися використовувати її для більш конкретних задач. Зараз же я хотів просто вас з нею познайомити і розширити, так би мовити, ваш погляд на набір стандартних бібліотек.
Про будь-яку бібліотеку ви повинні в першу чергу знати, що вона є, і уявляти, що можна зробити з її допомогою. А список функцій, їх параметрів і всі їх можливості завжди можна почерпнути з офіційної документації.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ