Класс datetime() модуля datetime

Создание объекта даты и времени.

Синтаксис:

import datetime

dt = datetime.datetime(year, month, day, hour=0, 
                      minute=0, second=0, microsecond=0, 
                      tzinfo=None, *, fold=0)

Параметры:

Аргументы year, month и day обязательны. Аргумент tzinfo может быть None или экземпляром подкласса datetime.tzinfoarrow-up-right. Остальные аргументы должны быть целыми числамиarrow-up-right:

  • year - год в пределах datetime.MINYEAR <= year <= datetime.MAXYEAR,

  • month - месяц в пределах 1 <= month <= 12,

  • day - день в пределах 1 <= day <= n_day, n_day - количество дней в данном месяце и году,

  • hour=0 - часы в пределах 0 <= hour < 24,

  • minute=0 - часы в пределах 0 <= minute < 60,

  • second=0 - секунды в пределах 0 <= second < 60,

  • microsecond=0 - микросекунды в пределах 0 <= microsecond < 1000000,

  • tzinfo=None - может быть None или экземпляром подкласса datetime.tzinfoarrow-up-right. Дополнительно смотрите модуль zoneinfoarrow-up-right (добавлен в Python 3.9) - конкретная реализация часового пояса для поддержки базы данных часовых поясов IANA,

  • fold=0 - [0, 1].

Если задан аргумент вне этих диапазонов, вызывается исключение ValueErrorarrow-up-right.

Возвращаемое значение:

Описание:

Класс datetime()arrow-up-right модуля datetimearrow-up-right это отдельный объект, объединяющий всю информацию из объекта даты datetime.datearrow-up-right и объекта времени datetime.timearrow-up-right.

  • Как и объект даты datetime.date() и datetime.time() предполагает использование текущего григорианского календаря в обоих направлениях.

  • Подобно объекту времени datetime.time(), datetime.datetime() предполагает, что каждый день есть ровно 3600 * 24 секунд.

Поддерживаемые операции с объектом datetime.datetime()arrow-up-right рассматриваются ниже.

Методы экземпляра класса datetime.datetime()arrow-up-right рассматриваются в следующем разделе.

Атрибуты экземпляра класса datetime.datetime(), доступны только для чтения:

  • dt.year - возвращает год как целое числоarrow-up-right,

  • dt.month - возвращает месяц как число от 1 до 12 включительно,

  • dt.day - возвращает день от 1 до количества дней в данном месяце данного года,

  • dt.hour - возвращает час в диапазонеarrow-up-right range(24),

  • dt.minute - возвращает минуты в диапазоне range(60),

  • dt.second - возвращает секунды в диапазоне range(60),

  • dt.microsecond - возвращает секунды в диапазоне range(1000000),

  • dt.tzinfo - возвращает объект, переданный в качестве аргумента tzinfo или None, если ничего не было передано.

  • dt.fold - возвращает зимнее 0 или летнее 1 время. Используется для устранения неоднозначности времени в момент перехода с зимнего на летнее время и обратно, когда смещение UTC для текущей зоны уменьшается или увеличивается.

Создание объекта datetime.datetime другими способами:


datetime.datetime.today():

Метод datetime.datetime.today() возвращает текущую локальную дату и время с tzinfo=None.

  • Метод эквивалентен вызову datetime.datetime.fromtimestamp(time.time()),

  • Метод функционально эквивалентен datetime.datetime.now()arrow-up-right, но без параметра tz.

Смотрите также метод datetime.datetime.fromtimestamp()arrow-up-right.

datetime.datetime.now(tz=None):

Метод datetime.datetime.now() возвращает текущую локальную дату и время.

Если необязательный аргумент tz равен None или не указан, то метод похож на datetime.datetime.today()arrow-up-right, но, если возможно, обеспечивает большую точность, чем полученную от функции time.time()arrow-up-right.

Если параметр tz не None, то это должен быть экземпляр подкласса datetime.tzinfoarrow-up-right, а текущие дата и время конвертируются в часовой пояс tz. Дополнительно смотрите модуль zoneinfoarrow-up-right (добавлен в Python 3.9) - конкретная реализация часового пояса для поддержки базы данных часовых поясов IANA.

Смотрите также метод создания объекта даты и времени datetime.datetime.utcnow()arrow-up-right.

datetime.datetime.utcnow():

Метод datetime.datetime.utcnow() возвращает текущую дату и время UTC, с tzinfo=None.

Метод похож на datetime.datetime.now()arrow-up-right, но возвращает текущую дату и время UTC как "наивный" объект модуля datetimearrow-up-right. Узнать текущую дату и время UTC можно вызвав datetime.datetime.now(datetime.timezone.utc).

Предупреждение. Поскольку "наивные" объекты модуля datetime обрабатываются многими методами объекта datetime.datetime()arrow-up-right как локальное время, предпочтительно использовать "осведомленные" объекты модуля, c представлением времени в UTC. Таким образом, рекомендуемый способ создания объекта, представляющего текущее время в UTC, заключается в вызове datetime.datetime.now(datetime.timezone.utc).

datetime.datetime.fromtimestamp(timestamp, tz=None):

Метод datetime.datetime.fromtimestamp() возвращает локальную дату и время, соответствующие метке времени POSIX time.time()arrow-up-right.

Если необязательный аргумент tz=None или не указан, отметка времени преобразуется в локальные дату и время платформы, а возвращаемый объект datetime.datetime() является "наивным", т.е. не несет информации о часовом поясе.

Если аргумент tz не None, то это должен быть экземпляр подкласса datetime.tzinfoarrow-up-right, а временная метка преобразуется в часовой пояс tz. Дополнительно смотрите модуль zoneinfoarrow-up-right (добавлен в Python 3.9) - конкретная реализация часового пояса для поддержки базы данных часовых поясов IANA.

Метод datetime.datetime.fromtimestamp()arrow-up-right может вызвать исключение OverflowErrorarrow-up-right, если отметка времени выходит за пределы диапазона значений, поддерживаемых функциями платформы и исключение OSErrorarrow-up-right при сбое localtime() или gmtime(). Отметка времени обычно ограничивается годами с 1970 по 2038 год.

Этот метод предпочтительнее, чем datetime.datetime.utcfromtimestamp()arrow-up-right.

datetime.datetime.utcfromtimestamp(timestamp):

Метод datetime.datetime.utcfromtimestamp() возвращает дату и время UTC, соответствующие метке времени POSIX, с tz=None. Полученный объект "наивный"arrow-up-right.

Метод может вызвать исключение OverflowErrorarrow-up-right, если отметка времени выходит за пределы диапазона значений, поддерживаемых функцией gmtime() платформы C, и исключение OSErrorarrow-up-right в случае сбоя gmtime(). Отметка времени обычно ограничивается годами с 1970 по 2038 год.

Чтобы получить осведомленный объект datetime, вызовите fromtimestamp ():

На POSIX-совместимых платформах это эквивалентно следующему выражению:

Кроме того, последняя формула всегда поддерживает полный диапазон лет: между datetime.MINYEAR и datetime.MAXYEAR включительно.

Предупреждение. Поскольку "наивные" объекты модуля datetimearrow-up-right обрабатываются многими методами объекта datetime.datetime()arrow-up-right как локальное время, предпочтительно использовать "осведомленные" объекты модуля, c представлением времени в UTC. Таким образом, рекомендуемый способ создания объекта, представляющего текущее время в UTC, заключается в вызове datetime.datetime.fromtimestamp(timestamp, datetime.timezone.utc).

datetime.datetime.combine(datetime.date, datetime.time, tzinfo=self.tzinfo):

Метод datetime.datetime.combine() возвращает новый объект datetime.datetime()arrow-up-right, компоненты даты date которого равны переданному объекту datetime.date, а компоненты времени time равны переданному объекту datetime.time.

Если указан аргумент tzinfo, то его значение используется для установки атрибута результата tzinfo, в противном случае используется атрибут tzinfo аргумента time.

Для любого объекта dt = datetime.datetime(), dt == datetime.combine(dt.date(), dt.time(), dt.tzinfo). Если дата является объектом datetime, а его компоненты времени и атрибуты tzinfo игнорируются.

datetime.datetime.fromisoformat(date_string):

Метод datetime.datetime.fromisoformat() возвращает дату и время datetime.datetime(), соответствующую строке date_string, в любом допустимом формате ISO 8601 со следующими исключениями:

  • Смещение часового пояса может составлять доли секунды.

  • Разделитель T может быть заменен любым символом Юникода.

  • Порядковые даты в настоящее время не поддерживаются.

  • Дробные часы и минуты не поддерживаются.

Изменено в Python 3.11: ранее этот метод поддерживал только форматы, которые могли быть созданы с помощью datetime.date.isoformat()arrow-up-right или datetime.datetime.isoformat()arrow-up-right.

Примеры:

datetime.datetime.fromisocalendar(year, week, day):

Метод datetime.datetime.fromisocalendar() возвращает объект даты и времени, соответствующих календарной дате ISO, указанной в атрибутах year, week, day. Не-дата компоненты datetime заполняются их обычными значениями по умолчанию.

Это обратный метод datetime.isocalendar()arrow-up-right.

datetime.datetime.strptime(date_string, format):

Метод datetime.datetime.strptime() возвращает объект даты и времени datetime.datetime(), соответствующее проанализированный строкеarrow-up-right date_string в соответствии с форматом.

Метод эквивалентен:

Вызывается исключение ValueErrorarrow-up-right, если date_string и format не могут быть проанализированы time.strptime()arrow-up-right или если метод возвращает значение, которое не является кортежемarrow-up-right структуры времениarrow-up-right.

Полный список директив форматирования смотрите в разделе "Поведение методов strftime() и strptime() модуля datetime"arrow-up-right.


Поддерживаемые операции datetime.datetime():

Операция
Результат

datetime2 = datetime1 + timedelta

(1)

datetime2 = datetime1 - timedelta

(2)

timedelta = datetime1 - datetime2

(3)

datetime1 < datetime2

Сравнение `datetime.datetime с datetime.datetime (4)

  1. datetime2 - это продолжительность timedelta, удаляемая из datetime1. Продвижение вперед во времени, если timedelta.days > 0, или назад, если timedelta.days < 0. Результат имеет тот же атрибут tzinfo, что и входные данные datetime, и datetime2 - datetime1 == timedelta after. Если datetime2.year будет меньше datetime.MINYEAR или больше datetime.MAXYEAR возникает исключение OverflowErrorarrow-up-right. Обратите внимание, что никакие настройки часового пояса не выполняются.

  2. Вычисляет datetime2 так, чтобы datetime2 + timedelta == datetime1. Кроме того, у результата есть тот же атрибут tzinfo, что и для ввода даты и времени и никакие настройки часового пояса не выполняются.

  3. Вычитание datetime.datetime() из datetime.datetime() определяется только в том случае, если оба операнда "наивны" или оба "осведомленные"arrow-up-right. Если один "осведомленный", а другой "наивный", то возникает исключение TypeErrorarrow-up-right. Если оба являются "наивными" или оба "осведомленными" и имеют одинаковый атрибут tzinfo, то атрибуты tzinfo игнорируются и в результате получается td - объект datetime.timedeltaarrow-up-right, такой что datetime2 + td == datetime1. В этом случае настройки часового пояса не выполняются. Если оба осведомлены и имеют разные атрибуты tzinfo, a-b действует так, как если бы сначала a и b были сначала преобразованы в наивные даты UTC. В результате (a.replace(tzinfo=None) - a.utcoffset()) - (b.replace(tzinfo=None) - b.utcoffset()) за исключением того, что реализация никогда не переполняется.

  4. datetime1 считается меньше datetime2, когда datetime1 предшествует datetime2 во времени. При сравнении "наивного" объекта с "осведомленным"arrow-up-right вызывается TypeError. При сравнений на равенство "наивные" экземпляры никогда не будут равны "осведомленным". Если оба объекта "осведомлены" и имеют один и тот же атрибут tzinfo, то общий атрибут tzinfo игнорируется и сравниваются базовые значения времени. Если оба объекта "осведомлены" и имеют разные атрибуты tzinfo, то объекты сначала корректируются путем вычитания их смещений UTC, полученных из self.utcoffset().

Примечание.

Сравнение объектов datetime.datetime() вызывает исключение TypeErrorarrow-up-right, если один из объектов сравнения не является объектом datetime.datetime().

Если один из объектов сравнения имеет атрибут .timetuple(), то возвращается исключение NotImplementedarrow-up-right. Этот хук дает другим типам объектов даты возможность реализовать сравнение смешанного типа.

В противном случае, когда объект datetime.datetime() сравнивается с объектом другого типа, то вызывается исключение TypeError.

Last updated