Модуль datetime
является стандартным модулем языка Python и предоставляет классы для работы с датами и временем. Этот модуль позволяет выполнять различные операции с датами, такие как сравнение дат, вычисление разницы между датами, форматирование даты и времени, а также многое другое.
datetime.date
: представляет дату в формате ГГГГ-ММ-ДД.
datetime.time
: представляет время в формате ЧЧ:ММ:СС:МКС.
datetime.datetime
: представляет комбинированную дату и время.datetime.timedelta
: представляет разницу между двумя моментами времени.Класс datetime.date
представляет дату в формате ГГГГ-ММ-ДД.
Пример использования класса datetime.date
:
from datetime import date
today = date.today()
print(today) # Вывод: 2022-02-14
В этом примере мы создаем объект today
класса datetime.date
, который представляет текущую дату. При печати этого объекта мы получаем дату в формате ГГГГ-ММ-ДД
.
Класс datetime.time
представляет время в формате ЧЧ:ММ:СС:МКС.
Пример использования класса datetime.time
:
from datetime import time
current_time = time(12, 30, 0)
print(current_time) # Вывод: 12:30:00
В этом примере мы создаем объект current_time
класса datetime.time
, который представляет время 12:30:00. При печати этого объекта мы получаем время в формате ЧЧ:ММ:СС.
Класс datetime.datetime
представляет комбинированную дату и время.
Пример использования класса datetime.datetime
:
from datetime import datetime
now = datetime.now()
print(now) # Вывод: 2022-02-14 12:30:00.123456
В этом примере мы создаем объект now
класса datetime.datetime
, который представляет текущую комбинированную дату и время. При печати этого объекта мы получаем комбинированную дату и время в формате ГГГГ-ММ-ДД
ЧЧ:ММ:СС.МКС
.
Класс datetime.timedelta
представляет разницу между двумя моментами времени.
Пример использования класса datetime.timedelta
:
from datetime import datetime, timedelta
start_time = datetime(2022, 1, 1)
end_time = datetime(2022, 2, 1)
duration = end_time - start_time
print(duration) # Вывод: 31 days, 0:00:00
В этом примере мы создаем объект duration
класса datetime.timedelta
, который представляет разницу между start_time
и end_time
. При печати этого объекта мы получаем разницу в днях, часах, минутах и секундах.
Метод strftime(format)
из модуля datetime
в языке Python позволяет форматировать дату и время в заданном формате. Он принимает один параметр:
format
: Строка с указанием желаемого формата вывода.Метод strftime()
используется для преобразования объекта datetime
в строку, согласно заданному формату. Формат задается с помощью специальных символов, называемых директивами формата. Каждая директива представляет собой символ, перед которым ставится знак процента (%).
Примеры директив формата:
%Y
: Год в четырехзначном формате (например, 2022)%m
: Месяц в виде числа (от 01 до 12)%d
: День месяца в виде числа (от 01 до 31)%H
: Часы в 24-часовом формате (от 00 до 23)%M
: Минуты (от 00 до 59)%S
: Секунды (от 00 до 59)%A
: День недели полностью записанный (например, "Monday")%B
: Название месяца полностью записанное (например, "January")Пример использования метода strftime()
:
from datetime import datetime
now = datetime.now()
formatted_date = now.strftime("%Y-%m-%d")
print(formatted_date)
# Вывод: "2022-01-01"
formatted_time = now.strftime("%H:%M:%S")
print(formatted_time)
# Вывод: "12:30:45"
formatted_datetime = now.strftime("%Y-%m-%d %H:%M:%S")
print(formatted_datetime)
# Вывод: "2022-01-01 12:30:45"
Метод strptime(date_string, format)
из модуля datetime
в языке Python позволяет преобразовать строку в объект datetime
, используя заданный формат даты и времени. Он принимает два параметра:
date_string
: Строка, содержащая дату и время в заданном формате.format
: Строка с указанием формата даты и времени входной строки.Метод strptime()
используется для преобразования строки в объект datetime
в соответствии с указанным форматом. Для этого также используются директивы формата, аналогичные методу strftime()
.
Пример использования метода strptime()
:
from datetime import datetime
date_string = "2022-01-01"
formatted_date = datetime.strptime(date_string, "%Y-%m-%d")
print(formatted_date)
# Вывод: 2022-01-01 00:00:00
time_string = "12:30:45"
formatted_time = datetime.strptime(time_string, "%H:%M:%S")
print(formatted_time)
# Вывод: 1900-01-01 12:30:45
Модуль datetime
в языке Python предоставляет класс timezone
, который позволяет работать с часовыми поясами. Класс timezone
содержит информацию о смещении часовых поясов относительно времени UTC (координированное всемирное время).
Для использования класса timezone
необходимо сначала импортировать его из модуля datetime
.
from datetime import timezone
Класс timezone
имеет несколько предопределенных атрибутов, таких как timezone.utc
, представляющий UTC, и timezone.min
, представляющий минимальное смещение в часовых поясах.
Кроме того, можно создать собственный объект timezone
, указав смещение относительно UTC в секундах. Для этого можно воспользоваться методом timezone(offset)
, где offset
- это количество секунд.
Пример создания собственного объекта timezone
:
import datetime
# Создание объекта timezone смещениями +03:00 и +04:00
tz1 = datetime.timezone(datetime.timedelta(hours=3))
tz2 = datetime.timezone(datetime.timedelta(hours=4))
# Использование объектов timezone
now = datetime.datetime.now(tz1)
print(now)
# Вывод: текущее время в часовом поясе +03:00
future = now + datetime.timedelta(hours=1)
print(future)
# Вывод: текущее время + 1 час в часовом поясе +03:00
future_tz2 = future.astimezone(tz2)
print(future_tz2)
# Вывод: текущее время + 1 час в часовом поясе +04:00
В данном примере создаются два объекта timezone
с разными смещениями: tz1
с смещением +03:00 и tz2
с смещением +04:00. Затем создается объект now
, представляющий текущее время в часовом поясе tz1
. С помощью метода astimezone()
можно изменить часовой пояс объекта now
на tz2
, получив объект future_tz2
.
Класс timezone
также поддерживает различные методы и операции для работы с временем и смещением, такие как преобразование времени в другой часовой пояс, арифметические операции с смещением и т.д.
Подробную информацию о классе timezone
и его методах можно найти в официальной документации Python: [https://docs.python.org/3/library/datetime.html#datetime.timezone](https://docs.python.org/3/library/datetime.html#datetime.timezone)
Класс tzinfo
является абстрактным базовым классом, который определяет интерфейс для классов, представляющих информацию о часовых поясах. Он содержит методы, которые должны быть реализованы в конкретных подклассах для работы с конкретными часовыми поясами.
Несмотря на то, что класс tzinfo
является абстрактным, сам по себе он содержит некоторую функциональность и методы, которые могут быть использованы для работы с часовыми поясами.
Класс tzinfo
определяет следующие методы, которые могут быть реализованы в подклассах:
utcoffset(self, dt)
: Возвращает смещение времени относительно UTC для указанной даты и времени.dst(self, dt)
: Возвращает информацию о временном сдвиге, включая переход на летнее время или обратный переход на стандартное время, для указанной даты и времени.tzname(self, dt)
: Возвращает человекочитаемое имя часового пояса для указанной даты и времени.fromutc(self, dt)
: Преобразует указанную дату и время из UTC в часовой пояс.utcfromtimestamp(cls, timestamp)
: Возвращает дату и время в UTC, основываясь на указанном метке времени.now(cls)
: Возвращает текущую дату и время в часовом поясе.dst(self, dt)
: Возвращает информацию о временном сдвиге, включая переход на летнее время или обратный переход на стандартное время, для указанной даты и времени.В модуле datetime
также определены несколько стандартных подклассов tzinfo
, которые могут быть использованы для представления различных часовых поясов. Некоторые из этих подклассов включают:
timezone
: Позволяет представлять фиксированные смещения относительно UTC.timedelta
: Представляет разницу между двумя моментами времени, включая часовые пояса.dst
: Предоставляет информацию о переходе на летнее время или обратном переходе на стандартное время для указанной временной зоны.tzstr
: Позволяет представлять информацию о часовых поясах в строковом формате.utc
: Представляет часовой пояс UTC (всемирное координированное время).Пример использования класса tzinfo
:
from datetime import datetime, tzinfo, timedelta
class MyTimeZone(tzinfo):
def __init__(self, name, offset):
self.name = name
self.offset = offset
def utcoffset(self, dt):
return timedelta(hours=self.offset)
def tzname(self, dt):
return self.name
def dst(self, dt):
return timedelta(0)
def fromutc(self, dt):
return dt + timedelta(hours=self.offset)
my_timezone = MyTimeZone("My Time Zone", 2)
current_time = datetime.now(my_timezone)
print(current_time)