Класс DateTime модуля DateTime, как следует из названия, содержит информацию как о дате, так и о времени. Как и объект даты, DateTime предполагает, что текущий григорианский календарь расширен в обоих направлениях; как и объект времени, DateTime предполагает, что в каждом дне ровно 3600*24 секунды. Но в отличие от класса date, объекты класса DateTime являются потенциально осведомленными объектами, т. е. они также содержат информацию о часовом поясе.
Синтаксис:
class datetime.datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0, tzinfo=None, *, fold=0)
Аргументы года, месяца и дня являются обязательными. tzinfo может быть None, остальные все атрибуты должны быть целыми числами в следующем диапазоне:
- MINYEAR(1) <= year <= MAXYEAR(9999)
- 1 <= month <= 12
- 1 <= day <= number of days in the given month and year
- 0 <= hour < 24
- 0 <= minute < 60
- 0 <= second < 60
- 0 <= microsecond < 1000000
- fold in [0, 1]
Примечание: Передача аргумента, отличного от integer, вызовет ошибку типа, а передача аргументов за пределы диапазона вызовет ошибку значения.
Пример:
Создание экземпляра класса DateTime
# Python program to
# demonstrate datetime object
from datetime import datetime
# Initializing constructor
a = datetime(2022, 10, 22)
print(a)
# Initializing constructor
# with time parameters as well
a = datetime(2022, 10, 22, 6, 2, 32, 5456)
print(a)
Выход:
2022-10-22 00:00:00
2022-10-22 06:02:32.005456
Атрибуты класса
Давайте посмотрим на атрибуты, предоставляемые этим классом:
Имя атрибута | Описание |
---|---|
минута | Минимальное представимое время-дата |
максимум | Максимальное представимое время-дата |
разрешение | Минимально возможная разница между объектами datetime |
год | Диапазон года должен быть между МИНИМАЛЬНЫМ и МАКСИМАЛЬНЫМ ГОДОМ |
месяц | Диапазон месяцев должен быть от 1 до 12 |
день | Диапазон дней должен быть от 1 до количества дней в данном месяце данного года |
час | Диапазон часов должен быть от 0 до 24 (не включая 24) |
минута | Диапазон минут должен быть от 0 до 60 (не включая 60) |
второй | Диапазон секунд должен быть от 0 до 60 (не включая 60) |
микросекунда | Диапазон микросекунд должен быть от 0 до 1000000 (не включая 1000000). |
tzinfo | Объект, содержащий информацию о часовом поясе |
сгибать | Представляет, произошла ли складка за это время или нет |
Пример 1.
Получение минимального и максимального представимого объекта DateTime
from datetime import datetime
# Getting min datetime
mindatetime = datetime.min
print("Min DateTime supported", mindatetime)
# Getting max datetime
maxdatetime = datetime.max
print("Max DateTime supported", maxdatetime)
Выход:
Минимальное поддерживаемое время 0001-01-01 00:00:00
Максимальная поддержка даты и времени 9999-12-31 23:59:59.999999
Пример 2.
Доступ к атрибутам объекта даты и времени
from datetime import datetime
# Getting Today's Datetime
today = datetime.now()
# Accessing Attributes
print("Day: ", today.day)
print("Month: ", today.month)
print("Year: ", today.year)
print("Hour: ", today.hour)
print("Minute: ", today.minute)
print("Second: ", today.second)
Выход:
День: 26
Месяц: 7
Год выпуска: 2021
Час: 16
Минута: 24
Второе: 7
Функции класса
Класс DateTime предоставляет различные функции для работы с объектами DateTime, например, мы можем преобразовать объект DateTime в строку и строку в объекты DateTime, мы также можем получить день недели для определенного дня недели определенного месяца, мы также можем установить часовой пояс для определенного объекта DateTime и т. д.
Список методов класса DateTime
Имя функции | Описание |
---|---|
astimezone() | Возвращает объект DateTime, содержащий информацию о часовом поясе. |
combine() | Объединяет объекты даты и времени и возвращает объект DateTime |
ctime() | Возвращает строковое представление даты и времени |
date() | Возвращает объект класса Date |
fromisoformat() | Возвращает объект datetime из строкового представления даты и времени |
fromordinal() | Возвращает объект даты из пролептического григорианского порядкового номера, где 1 января 1 года имеет порядковый номер 1. Час, минута, секунда и микросекунда равны 0 |
fromtimestamp() | Дата и время возврата из метки времени POSIX |
isocalendar() | Возвращает кортеж год, неделю и день недели |
isoformat() | Возвращает строковое представление даты и времени |
isoweekday() | Возвращает день недели в виде целого числа, где понедельник равен 1, а воскресенье-7 |
now() | Возвращает текущую локальную дату и время с параметром tz |
replace() | Изменяет конкретные атрибуты объекта DateTime |
strftime() | Возвращает строковое представление объекта DateTime в заданном формате |
strptime() | Возвращает объект DateTime, соответствующий строке даты |
time() | Возвращает объект класса Time |
timetuple() | Возвращает объект типа time.struct_time |
timetz() | Возвращает объект класса Time |
today() | Возвращает локальную дату и время с tzinfo как Нет |
toordinal() | Возвращает пролептический григорианский порядковый номер даты, где 1 января 1 года имеет порядковый номер 1 |
tzname() | Возвращает название часового пояса |
utcfromtimestamp() | Возврат UTC из метки времени POSIX |
utcoffset() | Возвращает смещение UTC |
utcnow() | Возвращает текущую дату и время UTC |
weekday() | Возвращает день недели в виде целого числа, где понедельник равен 0, а воскресенье-6 |
Пример 1:
Получение сегодняшней даты
from datetime import datetime
# Getting Today's Datetime
today = datetime.now()
print("Today's date using now() method:", today)
today = datetime.today()
print("Today's date using today() method:", today)
Выход:
Сегодняшняя дата с использованием метода now (): 2021-07-26 22:23:22.725573
Сегодняшняя дата с использованием метода today (): 2021-07-26 22:23:22.725764
Пример 2:
Получение даты-времени из метки времени и порядкового номера
from datetime import datetime
# Getting Datetime from timestamp
date_time = datetime.fromtimestamp(1887639468)
print("Datetime from timestamp:", date_time)
# Getting Datetime from ordinal
date_time = datetime.fromordinal(737994)
print("Datetime from ordinal:", date_time)
Выход:
Дата и время с отметкой времени: 2029-10-25 16:17:48
Дата и время с порядкового номера: 2021-07-23 00:00:00