Класс datetime() модуля datetime
Создание объекта даты и времени.
Синтаксис:
Параметры:
Аргументы year
, month
и day
обязательны. Аргумент tzinfo
может быть None
или экземпляром подкласса datetime.tzinfo
. Остальные аргументы должны быть целыми числами:
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.tzinfo
. Дополнительно смотрите модульzoneinfo
(добавлен в Python 3.9) - конкретная реализация часового пояса для поддержки базы данных часовых поясов IANA,fold=0
-[0, 1]
.
Если задан аргумент вне этих диапазонов, вызывается исключение ValueError
.
Возвращаемое значение:
Описание:
Класс datetime()
модуля datetime
это отдельный объект, объединяющий всю информацию из объекта даты datetime.date
и объекта времени datetime.time
.
Как и объект даты
datetime.date()
иdatetime.time()
предполагает использование текущего григорианского календаря в обоих направлениях.Подобно объекту времени
datetime.time()
,datetime.datetime()
предполагает, что каждый день есть ровно 3600 * 24 секунд.
Поддерживаемые операции с объектом datetime.datetime()
рассматриваются ниже.
Методы экземпляра класса datetime.datetime()
рассматриваются в следующем разделе.
Атрибуты экземпляра класса datetime.datetime()
, доступны только для чтения:
dt.year
- возвращает год как целое число,dt.month
- возвращает месяц как число от 1 до 12 включительно,dt.day
- возвращает день от 1 до количества дней в данном месяце данного года,dt.hour
- возвращает час в диапазоне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
другими способами:Текущая локальная дата и время
datetime.datetime.today()
,Текущая локальная дата и время
datetime.datetime.now()
,Текущая дата и время UTC
datetime.datetime.utcnow()
,Из
timestamp
datetime.datetime.fromtimestamp()
,Дата и время UTC из
timestamp
datetime.datetime.utcfromtimestamp()
,Из
datetime.date
+datetime.time
datetime.datetime.combine()
,Из строки ISO
datetime.datetime.fromisoformat()
,Из календарной даты ISO,
datetime.datetime.fromisocalendar()
,Из строки
datetime.datetime.strptime()
.
datetime.datetime.today()
:
Метод datetime.datetime.today()
возвращает текущую локальную дату и время с tzinfo=None
.
Метод эквивалентен вызову
datetime.datetime.fromtimestamp(time.time())
,Метод функционально эквивалентен
datetime.datetime.now()
, но без параметраtz
.
Смотрите также метод datetime.datetime.fromtimestamp()
.
datetime.datetime.now(tz=None)
:
Метод datetime.datetime.now()
возвращает текущую локальную дату и время.
Если необязательный аргумент tz
равен None
или не указан, то метод похож на datetime.datetime.today()
, но, если возможно, обеспечивает большую точность, чем полученную от функции time.time()
.
Если параметр tz
не None
, то это должен быть экземпляр подкласса datetime.tzinfo
, а текущие дата и время конвертируются в часовой пояс tz
. Дополнительно смотрите модуль zoneinfo
(добавлен в Python 3.9) - конкретная реализация часового пояса для поддержки базы данных часовых поясов IANA.
Смотрите также метод создания объекта даты и времени datetime.datetime.utcnow()
.
datetime.datetime.utcnow()
:
Метод datetime.datetime.utcnow()
возвращает текущую дату и время UTC, с tzinfo=None
.
Метод похож на datetime.datetime.now()
, но возвращает текущую дату и время UTC как "наивный" объект модуля datetime
. Узнать текущую дату и время UTC можно вызвав datetime.datetime.now(datetime.timezone.utc)
.
Предупреждение. Поскольку "наивные" объекты модуля datetime
обрабатываются многими методами объекта datetime.datetime()
как локальное время, предпочтительно использовать "осведомленные" объекты модуля, c представлением времени в UTC. Таким образом, рекомендуемый способ создания объекта, представляющего текущее время в UTC, заключается в вызове datetime.datetime.now(datetime.timezone.utc)
.
datetime.datetime.fromtimestamp(timestamp, tz=None)
:
Метод datetime.datetime.fromtimestamp()
возвращает локальную дату и время, соответствующие метке времени POSIX time.time()
.
Если необязательный аргумент tz=None
или не указан, отметка времени преобразуется в локальные дату и время платформы, а возвращаемый объект datetime.datetime()
является "наивным", т.е. не несет информации о часовом поясе.
Если аргумент tz
не None
, то это должен быть экземпляр подкласса datetime.tzinfo
, а временная метка преобразуется в часовой пояс tz
. Дополнительно смотрите модуль zoneinfo
(добавлен в Python 3.9) - конкретная реализация часового пояса для поддержки базы данных часовых поясов IANA.
Метод datetime.datetime.fromtimestamp()
может вызвать исключение OverflowError
, если отметка времени выходит за пределы диапазона значений, поддерживаемых функциями платформы и исключение OSError
при сбое localtime()
или gmtime()
. Отметка времени обычно ограничивается годами с 1970 по 2038 год.
Этот метод предпочтительнее, чем datetime.datetime.utcfromtimestamp()
.
datetime.datetime.utcfromtimestamp(timestamp)
:
Метод datetime.datetime.utcfromtimestamp()
возвращает дату и время UTC, соответствующие метке времени POSIX, с tz=None
. Полученный объект "наивный".
Метод может вызвать исключение OverflowError
, если отметка времени выходит за пределы диапазона значений, поддерживаемых функцией gmtime()
платформы C, и исключение OSError
в случае сбоя gmtime()
. Отметка времени обычно ограничивается годами с 1970 по 2038 год.
Чтобы получить осведомленный объект datetime, вызовите fromtimestamp ():
На POSIX-совместимых платформах это эквивалентно следующему выражению:
Кроме того, последняя формула всегда поддерживает полный диапазон лет: между datetime.MINYEAR
и datetime.MAXYEAR
включительно.
Предупреждение. Поскольку "наивные" объекты модуля datetime
обрабатываются многими методами объекта datetime.datetime()
как локальное время, предпочтительно использовать "осведомленные" объекты модуля, 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()
, компоненты даты 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()
или datetime.datetime.isoformat()
.
Примеры:
datetime.datetime.fromisocalendar(year, week, day)
:
Метод datetime.datetime.fromisocalendar()
возвращает объект даты и времени, соответствующих календарной дате ISO, указанной в атрибутах year
, week
, day
. Не-дата компоненты datetime заполняются их обычными значениями по умолчанию.
Это обратный метод datetime.isocalendar()
.
datetime.datetime.strptime(date_string, format)
:
Метод datetime.datetime.strptime()
возвращает объект даты и времени datetime.datetime()
, соответствующее проанализированный строке date_string
в соответствии с форматом.
Метод эквивалентен:
Вызывается исключение ValueError
, если date_string
и format
не могут быть проанализированы time.strptime()
или если метод возвращает значение, которое не является кортежем структуры времени.
Полный список директив форматирования смотрите в разделе "Поведение методов strftime()
и strptime()
модуля datetime
".
Поддерживаемые операции datetime.datetime()
:
datetime.datetime()
:Операция | Результат |
---|---|
datetime2 = datetime1 + timedelta | (1) |
datetime2 = datetime1 - timedelta | (2) |
timedelta = datetime1 - datetime2 | (3) |
datetime1 < datetime2 | Сравнение `datetime.datetime с datetime.datetime (4) |
datetime2
- это продолжительностьtimedelta
, удаляемая изdatetime1
. Продвижение вперед во времени, еслиtimedelta.days > 0
, или назад, еслиtimedelta.days < 0
. Результат имеет тот же атрибутtzinfo
, что и входные данныеdatetime
, иdatetime2 - datetime1 == timedelta after
. Еслиdatetime2.year
будет меньшеdatetime.MINYEAR
или большеdatetime.MAXYEAR
возникает исключениеOverflowError
. Обратите внимание, что никакие настройки часового пояса не выполняются.Вычисляет
datetime2
так, чтобыdatetime2 + timedelta == datetime1
. Кроме того, у результата есть тот же атрибутtzinfo
, что и для ввода даты и времени и никакие настройки часового пояса не выполняются.Вычитание
datetime.datetime()
изdatetime.datetime()
определяется только в том случае, если оба операнда "наивны" или оба "осведомленные". Если один "осведомленный", а другой "наивный", то возникает исключениеTypeError
. Если оба являются "наивными" или оба "осведомленными" и имеют одинаковый атрибутtzinfo
, то атрибутыtzinfo
игнорируются и в результате получаетсяtd
- объектdatetime.timedelta
, такой чтоdatetime2 + td == datetime1
. В этом случае настройки часового пояса не выполняются. Если оба осведомлены и имеют разные атрибутыtzinfo
,a-b
действует так, как если бы сначалаa
иb
были сначала преобразованы в наивные даты UTC. В результате(a.replace(tzinfo=None) - a.utcoffset()) - (b.replace(tzinfo=None) - b.utcoffset())
за исключением того, что реализация никогда не переполняется.datetime1
считается меньшеdatetime2
, когдаdatetime1
предшествуетdatetime2
во времени. При сравнении "наивного" объекта с "осведомленным" вызываетсяTypeError
. При сравнений на равенство "наивные" экземпляры никогда не будут равны "осведомленным". Если оба объекта "осведомлены" и имеют один и тот же атрибутtzinfo
, то общий атрибутtzinfo
игнорируется и сравниваются базовые значения времени. Если оба объекта "осведомлены" и имеют разные атрибутыtzinfo
, то объекты сначала корректируются путем вычитания их смещений UTC, полученных изself.utcoffset()
.
Примечание.
Сравнение объектов datetime.datetime()
вызывает исключение TypeError
, если один из объектов сравнения не является объектом datetime.datetime()
.
Если один из объектов сравнения имеет атрибут .timetuple()
, то возвращается исключение NotImplemented
. Этот хук дает другим типам объектов даты возможность реализовать сравнение смешанного типа.
В противном случае, когда объект datetime.datetime()
сравнивается с объектом другого типа, то вызывается исключение TypeError
.
Last updated