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