ENote
  • ✨Home
    • Відмова від відповідальності
  • Progr
    • Python
      • Модулі
        • pip
        • cgitb
        • datetime
          • Класс datetime() модуля datetime
            • Методы объекта datetime.datetime()
            • datetime.datetime examples
          • Класс timedelta() модуля datetime
            • datetime.timedelta examples
          • Класс date() модуля datetime
            • datetime.date examples
          • Класс time() модуля datetime
            • Формат для функций .strftime() и .strptime(). модуля datetime
        • os.path
        • pathlib
          • pathlib to str
        • subproces
        • os
        • Jinja
          • Синтаксис шаблонів Jinja
          • Клас Environment()
          • Простой пример cgi-скрипта c Jinja-шаблоном
          • Создание переменных
            • Як оновити глобальну змінну зсередини оператора IF / ELSE або циклу FOR
          • Фільтри і методи
          • Число у рядок, slices
          • Вбудовані фільтри Jinja2
        • re
          • re.search - example
          • re.findall - example
        • email / smtplib
          • Как отправлять электронные письма с помощью Python
        • requests
          • Як зберегти та завантажити файли cookie в запитах Python?
          • Извлечение и установка cookies с модулем requests в Python
          • Links
        • http.cookies
          • Всё о работе с cookie в Python — класс http.cookies
        • xlrd
        • xlwt
        • borb
          • ChunkOfText
          • send_usage_statistics
          • borb clear
          • 2.1.3 vs 2.1.15
          • QR-code
          • Залежності borb
        • JSON
          • Кирилиця в JSON
        • matplotlib
        • argparse
        • click
        • configparser
        • traceback
        • sys
          • exit()
        • mysql-connector-python
        • logging
        • icrawler
        • Auto Plates
        • rembg
        • random
      • Strings
        • Built-in methods
        • Форматування виводу
        • Початкові нулі
        • Рядок в число
      • list
        • Об’єднання списків
        • list.sort(), sorted()
        • list.reverse(), reversed()
        • all(), any()
        • sum(), min(), max()
        • map(), filter(), reduce()
        • join(), split()
      • tuple
      • dict
        • Об'єднання / злиття словників
        • Сортування словника Python: значення, ключі тощо
      • set
      • class Enum
      • Середнє арифметичне
      • Virtual environment
        • web-app
      • type(), isinstance()
      • __main__
      • Files & Dirs
        • Try except for exception handling
        • Cписок файлов директории
        • User Home Dir
        • Copy file
      • *args, **qwargs
      • Links
      • Область видимости
      • Handling a File Error
      • assert
      • if
      • Числа
        • Округлення чисел
        • Отримати число з рядка
      • Обработка исключений в Python
      • Файлы и сериализация данных
      • OOP
      • Net and Web
      • Структура проекта на Python
      • Распаковка итерируемых объектов
      • Links
      • Algorithms
      • Python exit commands: quit(), exit(), sys.exit() and os._exit()
      • Цикли for / while
      • uuid
    • JavaScript
      • String
        • replaceAll() polyfill
        • Шаблонные строки
      • Array
        • Все способы перебора массива в JavaScript
      • Object
      • document.location
      • RegExp
      • Examples
        • Вычисление остатка от деления
        • Остаток от деления и деление без остатка
        • Округление числа
      • XMLHttpRequest
      • alert, prompt, confirm
      • onclick
      • hidden, display:none
      • LocalStorage, sessionStorage
      • null, undefined
      • cookies (js)
      • var, let и const
        • var vs let
        • const
      • Модифікація DOM
        • DOM select
      • JSON
        • Try
      • fetch
      • typeof
      • FormData не включає disabled набори полів
      • FormData, fdata
      • Більше одного відео YouTube на одній сторінці
    • HTML, CSS
      • favicon
      • Деякі спецсимволи
      • meta
      • ASCII table
      • lang
      • Псевдоелементи ::after і ::before
      • Cursor
      • Об использовании нестандартных пробелов
      • Картинка фоном
      • Безпечні веб-шрифти
      • Завжди внизу, незалежно від пропорцій екрану
      • напівпрозорий елемент
      • Символи з тінью
      • SVG (bootstrap)
      • rel = canonical
      • link stylesheet: integrity & crossorigin
      • rel = noopener
    • Bootstrap
      • Form Validate
      • Password show/hide
    • Errors
  • Dev
    • Git
      • clone
      • git-scm (book)
      • git config
        • files .git*
        • core.filemode
        • core.sharedRepository
      • .gitignore
      • .gitkeep
      • Видалити з репозиторію
        • Видалений файл з однієї гілки...
      • Пам’ятка
        • Перегляд історії комітів
        • Скасувати git add
        • revert
        • Скасувати внесені зміни у файл
        • Додати до коміту файл
        • Видалити історію попередніх коммітів, та почати "з нуля"
        • Додати файли в останній коміт
      • Робота з гілками
        • Порівняти гілки
      • Git за полчаса
      • Три розділи проєкту Git
      • Merge conflict
      • Pull error
        • Git Error: You have divergent branches...
      • diff
      • Video
      • Merge скасувати
      • .gitignore: Permission denied
    • GitHub
      • SSH-підключення до GitHub
      • Перенести на сервер локальный репозиторий
      • Перенести на сервер репозиторій разом з історією
      • Створення змісту
    • Security
      • robots.txt
      • Cookies
    • Аутентифікація і cookies
      • ChatGPT
  • data
    • MySQL
      • MyISAM vs InnoDB
      • Типи даних
        • NULL (todo)
        • TIMESTAMP
        • YEAR
        • JSON
        • Требования к памяти для символьных типов
        • Поиск записей в таблице, которым нет соответствия в другой
      • Приклад створення БД, та користувача
        • Права для пользователей
      • Переглянути всі індекси таблиці
      • Копіювання, клонування таблиць
      • TEMPORARY TABLE
      • JOIN
      • ALTER TABLE
      • AUTO_INCREMENT
        • AUTO_INCREMENT у складовому індексі
      • LIMIT
        • Использование MySQL LIMIT
      • 10 Примеров входной загрузки данных из текстового файла в таблицы MySQL
      • Рішення
        • Выявление и удаление несвязанных записей
        • Выборка произвольных записей
        • Коректне сортування українських літер
        • Найти записи, которые присутствуют в одной таблице и отсутствуют во второй
        • Как удобно посмотреть данные...
        • Нахождение "дыр" в нумерации
        • Знайти дубликати полів в одній таблиці
        • Дані колонки 1 табл. перенести в 2 табл.
      • Функції
        • LAST_INSERT_ID()
        • GROUP_CONCAT
        • COUNT + DISTINCT
        • Функции для работы с датами и временем
      • Автоматизируйте создание бэкапов
      • mysqldump
        • Time Zone UTC
      • Результат запиту у файл
      • Результат запиту у змінну
      • Пособие по MySQL на Python
      • Змінні
      • Эмуляция функции row_number() в MySQL
      • Изучаем хранимые процедуры MySQL
      • SELECT DISTINCT
      • Dump всієї бази даних
      • Індекси
      • FOREIGN KEY
      • MAX(), MIN()
      • LENGTH, CHAR_LENGTH
      • Встановлення
    • MariaDB
    • PostgreSQL
      • Работа с базой данных PostgreSQL
      • Работаем с PostgreSQL через командную строку в Linux
    • Domains
      • Життєвий цикл доменів
      • Статус домена
    • SQLite, MySQL и PostgreSQL: сравниваем популярные реляционные СУБД
  • Linux
    • DNS
      • Как в DNS прописать 301 редирект
      • mail
        • SPF
          • Mirohost
        • _dmarc _domainkey
        • DKIM
        • Прописати ключі DKIM в exim
        • Листи з неіснуючим адресатом
    • Server
      • Zomro
        • pip
        • SSH-доступ по ключу (zomro)
        • venv
        • UnicodeEncodeError: 'latin-1' codec can't encode character
        • Mail Ports
        • Редірект з SSL-сертификатом на транзитному сайті
        • Редірект з SSL за допомогою .htaccess
      • Створення нового користувача з привілеями sudo в Ubuntu
      • SSH-доступ по ключу
      • Часовий пояс в Ubuntu 20.04
      • SSH-підключення командний рядок
      • Як встановити Python 3.9 (нижчу) на Ubuntu 22.04
      • Автозагрузка сервисов в Ubuntu
      • Підвищення безпеки SSH
      • Ubuntu Server
        • Art 01
    • Commands
      • adduser
      • apt
      • cat
      • ls
      • tar
      • ln
      • find
      • chmod
      • chown
      • mv
      • dig
      • ping
      • passwd
      • htpasswd
      • umask
      • usermode
      • history
      • cmp
      • chattr +i
    • Config
      • Keyboard
      • windows
      • My kbdswtch
      • Затримка при завантаженні системи
      • Files
        • /etc/resolv.conf
        • /boot/grub/grub.cfg
        • .config/user-dir.dirs
        • /etc/fstab
      • Як встановити шрифти
    • Apache
      • Встановлення
      • Подключить виртуальный хост
      • Файл .htaccess
        • Установка индексного файла
        • Фільтр IP-адрес
        • ModRewrite
          • Заборонити доступ за User-Agent
          • Перенаправити на іншу сторінку
          • Додавати слеш до адреси
        • Включити SSI
        • Виконувати скрипти CGI
        • Тимчасовий перехід з одного домену на інший
      • SSI
      • SSL
      • Відключити старт Apache з системою
      • Помилки
        • Скрипт не працює
        • CGI-скрипт не виводить кирилицю
        • Could not reliably determine
        • Permissions are missing on a component of the path
        • Symbolic link not allowed or link target not accessible
      • AddType, AddLanguage, AddCharset
    • Nginx
      • 301 редирект з www. та http: на https://(без www.)domain
    • Soft
      • SublimeText
        • Plugins
      • Firefox
      • Gwenview
      • inkscape
      • Double Commander
      • nano
      • mc
        • Знайти потрібний файл
      • meld / diffuse
      • hexedit
      • Kazam - відео з екрану
      • VeraCrypt
      • XnView MP
      • LibreOffice
      • xdotool
      • System Load Monitor
      • Battery Monitor
      • qBittorrent
    • Перетворення .RPM в .DEB
    • Bash
      • Конкатенация строк в Bash
      • Page
    • Файлові часові позначки в Linux: atime, mtime, ctime
    • Права доступу для файлів і каталогів
    • Зміна паролю root
    • Быстро удалить огромное количество файлов в каталоге
    • Як узнати версію Linux?
    • USB Flash ext4
    • Clear Cache
    • Доступ до спільної папки на Windows
    • Віртуальні консолі TTY1–TTY6
    • APT. Заборона оновлення
  • Різне
    • GitBook
    • Банковское округление
    • Ім’я користувача Youtube
  • Hard
    • Hardware
      • Acer Extensa
      • Таймер Feron TM22
      • WD My Book World Edition 2Tb
        • FTP
        • SSH
          • Проблеми
        • SSHFS
      • Canon PIXMA E3340
      • Термометри
    • Auto
      • Акумулятор
    • Electro
    • USB Flash recovery
Powered by GitBook
On this page
  1. Progr
  2. Python
  3. Модулі
  4. datetime

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

PreviousdatetimeNextМетоды объекта datetime.datetime()

Last updated 2 years ago

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

Синтаксис:

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 или экземпляром . Остальные аргументы должны быть :

  • 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 для текущей зоны уменьшается или увеличивается.

>>> import datetime
>>> date = datetime.datetime(2021, 7, 14)
>>> date
# datetime.datetime(2021, 7, 14, 0, 0)
>>> print(date.day, date.month, date.year)
# 14 7 2021
>>> print(date.hour, date.minute, date.second)
0 0 0

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


datetime.datetime.today():

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

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

>>> import datetime
>>> datetime.datetime.today()
# datetime.datetime(2020, 5, 5, 14, 56, 40, 902733)

datetime.datetime.now(tz=None):

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

>>> import datetime
>>> datetime.datetime.now()
# datetime.datetime(2020, 5, 5, 15, 5, 3, 204585)

datetime.datetime.utcnow():

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

>>> import datetime
>>> datetime.datetime.utcnow()
# datetime.datetime(2020, 5, 5, 12, 12, 53, 436626)

# рекомендуемый способ создания объекта c текущим временем в UTC
>>> datetime.datetime.now(datetime.timezone.utc)
# datetime.datetime(2020, 5, 5, 12, 13, 17, 243930, tzinfo=datetime.timezone.utc)

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

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

>>> import datetime, time
>>> sec = time.time()
>>> sec
# 1588681784.4106905
>>> datetime.datetime.fromtimestamp(sec)
# datetime.datetime(2020, 5, 5, 15, 29, 44, 410691)

datetime.datetime.utcfromtimestamp(timestamp):

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

datetime.datetime.fromtimestamp(timestamp, timezone.utc)

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

datetime.datetime(1970, 1, 1, tzinfo=datetime.timezone.utc) + \
                      datetime.timedelta(seconds=timestamp)

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

>>> import datetime, time
>>> sec = time.time()
>>> sec
# 1588682447.241077
>>> datetime.datetime.fromtimestamp(sec, datetime.timezone.utc)
# datetime.datetime(2020, 5, 5, 12, 40, 47, 241077, tzinfo=datetime.timezone.utc)

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 игнорируются.

>>> import datetime 
# дата
>>> date = datetime.date.today()
# время
>>> time = datetime.time(23, 55)
# интервал
>>> delta = datetime.timedelta(minutes=30)
# соединяем все вместе
>>> datetime.datetime.combine(date, time) + delta
# datetime.datetime(2020, 5, 6, 0, 25)

datetime.datetime.fromisoformat(date_string):

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

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

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

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

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

Примеры:

>>> from datetime import datetime
>>> datetime.fromisoformat('2011-11-04')
# datetime.datetime(2011, 11, 4, 0, 0)
>>> datetime.fromisoformat('20111104')
# datetime.datetime(2011, 11, 4, 0, 0)
>>> datetime.fromisoformat('2011-11-04T00:05:23')
# datetime.datetime(2011, 11, 4, 0, 5, 23)
>>> datetime.fromisoformat('2011-11-04T00:05:23Z')
# datetime.datetime(2011, 11, 4, 0, 5, 23, tzinfo=datetime.timezone.utc)
>>> datetime.fromisoformat('20111104T000523')
# datetime.datetime(2011, 11, 4, 0, 5, 23)
>>> datetime.fromisoformat('2011-W01-2T00:05:23.283')
# datetime.datetime(2011, 1, 4, 0, 5, 23, 283000)
>>> datetime.fromisoformat('2011-11-04 00:05:23.283')
# datetime.datetime(2011, 11, 4, 0, 5, 23, 283000)
>>> datetime.fromisoformat('2011-11-04 00:05:23.283+00:00')
# datetime.datetime(2011, 11, 4, 0, 5, 23, 283000, tzinfo=datetime.timezone.utc)
>>> datetime.fromisoformat('2011-11-04T00:05:23+04:00')   
# datetime.datetime(2011, 11, 4, 0, 5, 23,
#     tzinfo=datetime.timezone(datetime.timedelta(seconds=14400)))

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

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

>>> import datetime
>>> datetime.datetime.isocalendar(2021, 19, 2)
# datetime.datetime(2020, 5, 5, 0, 0)

>>> dt = datetime.datetime.now()
>>> dt.isocalendar()
# (2020, 19, 2)

datetime.datetime.strptime(date_string, format):

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

datetime.datetime(*(time.strptime(date_string, format)[0:6]))
>>> import datetime
>>> date_str = 'Fri, 24 Apr 2021 16:22:54 +0000'
>>> format = '%a, %d %b %Y %H:%M:%S +0000'
>>> datetime.datetime.strptime(date_str, format)
# datetime.datetime(2021, 4, 24, 16, 22, 54)

>>> date_str = '24.12.2020 16:22'
>>> format = '%d.%m.%Y %H:%M'
>>> datetime.datetime.strptime(date_str, format)
# datetime.datetime(2020, 12, 24, 16, 22)

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

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

datetime2 = datetime1 + timedelta

(1)

datetime2 = datetime1 - timedelta

(2)

timedelta = datetime1 - datetime2

(3)

datetime1 < datetime2

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

  1. Вычисляет 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(), то возвращается . Этот хук дает другим типам объектов даты возможность реализовать сравнение смешанного типа.

подкласса datetime.tzinfo
целыми числами
подкласса datetime.tzinfo
модуль zoneinfo
исключение ValueError
объект даты и времени datetime.datetime()
datetime()
datetime
datetime.date
datetime.time
Поддерживаемые операции с объектом datetime.datetime()
Методы экземпляра класса datetime.datetime()
целое число
диапазоне
Текущая локальная дата и время
Текущая локальная дата и время
Текущая дата и время UTC
Из timestamp
Дата и время UTC из timestamp
Из datetime.date + datetime.time
Из строки ISO
Из календарной даты ISO,
Из строки
datetime.datetime.now()
метод datetime.datetime.fromtimestamp()
datetime.datetime.today()
time.time()
подкласса datetime.tzinfo
модуль zoneinfo
datetime.datetime.utcnow()
datetime.datetime.now()
"наивный" объект модуля datetime
объекта datetime.datetime()
time.time()
подкласса datetime.tzinfo
модуль zoneinfo
datetime.datetime.fromtimestamp()
исключение OverflowError
исключение OSError
datetime.datetime.utcfromtimestamp()
объект "наивный"
исключение OverflowError
исключение OSError
"наивные" объекты модуля datetime
объекта datetime.datetime()
объект datetime.datetime()
datetime.date.isoformat()
datetime.datetime.isoformat()
datetime.isocalendar()
строке
исключение ValueError
time.strptime()
кортежем
структуры времени
"Поведение методов strftime() и strptime() модуля datetime"
исключение OverflowError
оба операнда "наивны" или оба "осведомленные"
исключение TypeError
объект datetime.timedelta
"наивного" объекта с "осведомленным"
исключение TypeError
исключение NotImplemented