Python - Дата и Время

Привет, будущие волшебники Python! Сегодня мы отправляемся в захватывающее путешествие по миру дат и времени в Python. Как ваш дружелюбный соседский учитель компьютеров, я рад вести вас по этому приключению. Так что возьмите свои виртуальные палочки (клавиатуры) и погружайтесь вместе с нами!

Python - Date & Time

Что такое интервалы тика?

Перед тем как начать манипулировать датами и временем, давайте понимем фундаментальный концепт: интервалы тика. В мире компьютеров время часто измеряется в тиках. Но что же такое тик?

Тик - это как пульс вашего компьютера. Это самая маленькая единица времени, которую может измерить час вашего компьютера. В Python мы измеряем тики как количество секунд, прошедших с 1 января 1970 года в 00:00:00 UTC. Эта точка времени часто называется "эпохой".

Давайте посмотрим, как мы можем получить текущее значение тика:

import time

ticks = time.time()
print("Текущее значение тика:", ticks)

Если вы выполните этот код, вы увидите большое число. Это количество секунд, прошедших с эпохи. Ну что ж, классно, не так ли?

Что такое TimeTuple?

Теперь поговорим о TimeTuple. Это не новый танцевальный шаг (хотя и звучит как один!), а способ, которым Python представляет время.

TimeTuple - это кортеж, содержащий 9 элементов, которые представляют различные аспекты времени:

Индекс Атрибут Значения
0 Год (например, 2023)
1 Месяц 1-12
2 День 1-31
3 Час 0-23
4 Минута 0-59
5 Секунда 0-61 (60 и 61 для високосных секунд)
6 День недели 0-6 (0 - понедельник)
7 День года 1-366
8 DST -1, 0, 1 (Флаг летнего времени)

Не волнуйтесь, если это кажется пугающим. Мы будем использовать эти элементы на протяжении всего урока, и вы вскоре станете с ними знакомы!

Получение текущего времени

Начнем с чего-то простого: получение текущего времени. Python делает это очень просто с помощью модуля time:

import time

current_time = time.localtime()
print("Текущее время:", current_time)

Когда вы выполните это, вы увидите выведенный TimeTuple. Каждое число соответствует элементу в таблице, которую мы только что видели. Например, если вы увидите time.struct_time(tm_year=2023, tm_mon=6, tm_mday=15, tm_hour=14, tm_min=30, tm_sec=0, tm_wday=3, tm_yday=166, tm_isdst=0), это означает, что сейчас 15 июня 2023 года в 14:30.

Получение форматированного времени

Хотя TimeTuples полезны для компьютеров, они не очень удобны для людей. Давайте отформатируем наше время более человеко-понятным образом:

import time

formatted_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
print("Форматированное время:", formatted_time)

Это выведет что-то вроде "2023-06-15 14:30:00". Много лучше, не так ли?

Получение календаря для месяца

Теперь поднимем настроение и выведем календарь для всего месяца. Для этого мы будем использовать модуль calendar:

import calendar

year = 2023
month = 6

print(calendar.month(year, month))

Это выведет красиво отформатированный календарь на июнь 2023 года. Это как иметь мини-календарь на вашем рабочем столе прямо в вашей программе на Python!

Модуль time

Мы уже использовали модуль time немного, но давайте рассмотрим его подробнее. Этот модуль предоставляет различные функции, связанные с временем. Вот несколько полезных из них:

import time

print("Текущее время в секундах с эпохи:", time.time())
print("Текущее местное время:", time.ctime())
print("Сон на 2 секунды...")
time.sleep(2)
print("Проснулся!")

Функция sleep() особенно полезна, когда вы хотите, чтобы ваша программа ненадолго паузировала. Это как если бы вы сказали своему коду взять короткий сон!

Модуль calendar

Мы видели, как вывести месяц, но модуль calendar может сделать гораздо больше:

import calendar

print("Является ли 2023 год високосным?", calendar.isleap(2023))
print("Сколько високосных лет между 2000 и 2050?", calendar.leapdays(2000, 2050))
print("Какой день недели 15 июня 2023 года?", calendar.weekday(2023, 6, 15))

Эти функции помогают вам работать с календарями и датами легко. Нет нужды считать на пальцах, чтобы понять, високосный ли год!

Модуль datetime

Модуль datetime - это как швейцарский армейский нож манипуляции временем в Python. Он сочетает функциональность как модулей time и calendar, а также добавляет еще больше функций.

from datetime import datetime, date, time

# Текущая дата и время
now = datetime.now()
print("Текущая дата и время:", now)

# Создание определенной даты
my_birthday = date(1990, 5, 15)
print("Моя дата рождения:", my_birthday)

# Создание определенного времени
alarm = time(7, 30, 0)
print("Будильник установлен на:", alarm)

С datetime вы можете создавать, манипулировать и форматировать даты и времена с легкостью.

Объект date

Объект date из модуля datetime позволяет вам работать с датами (год, месяц и день):

from datetime import date

today = date.today()
print("Сегодняшняя дата:", today)
print("Год:", today.year)
print("Месяц:", today.month)
print("День:", today.day)

Это как иметь умный календарь, который знает, какой сегодня день, и может рассказать о нем все!

Объект time

По аналогии, объект time позволяет вам работать с временем (час, минута, секунда, микросекунда):

from datetime import time

lunch_time = time(12, 30, 0)
print("Время обеда:", lunch_time)
print("Час:", lunch_time.hour)
print("Минута:", lunch_time.minute)
print("Секунда:", lunch_time.second)

Теперь вы можете точно распланировать свои перерывы для кодинга!

Объект datetime

Объект datetime комбинирует date и time, давая вам полный контроль над обоими:

from datetime import datetime

now = datetime.now()
print("Текущая дата и время:", now)
print("Текущий год:", now.year)
print("Текущий месяц:", now.month)
print("Текущий день:", now.day)
print("Текущий час:", now.hour)
print("Текущая минута:", now.minute)
print("Текущая секунда:", now.second)

Это как иметь супер-мощные часы, которые знают все о текущем моменте!

Объект timedelta

И, наконец, давайте поговорим о timedelta. Этот объект представляет длительность времени и является невероятно полезным для арифметики дат:

from datetime import datetime, timedelta

now = datetime.now()
print("Текущая дата и время:", now)

# Добавление 1 дня
tomorrow = now + timedelta(days=1)
print("Это время завтра:", tomorrow)

# Вычитание 1 недели
last_week = now - timedelta(weeks=1)
print("Это время в прошлой неделе:", last_week)

С timedelta вы можете путешествовать во времени в вашем коде! Ну, по крайней мере, вы можете легко вычислить будущие и прошлые даты, что очень удобно для многих приложений.

И вот и всё, мои молодые Pythonista! Мы путешествовали по захватывающему миру дат и времени в Python. Помните, практика - это это делает совершенным, так что не стесняйтесь экспериментировать с этими концепциями. И скоро вы сможете манипулировать временем, как настоящий кодинг-лорд времени!

Credits: Image by storyset