Поиск, если дата-время питона не имеет информации о времени - PullRequest
2 голосов
/ 15 сентября 2009

Я хочу перехватить значения, подобные этим (в которых нет «информации о времени» для даты и времени):

datetime.datetime(2009, 4, 6, 0, 0)

Есть ли лучший способ обнаружить эти значения, кроме тестирования час / минута / секунда?

if value.hour == 0 and value.minute == 0 and value.second == 0:
     # do stuff

Ответы [ 4 ]

12 голосов
/ 15 сентября 2009

Здесь работает метод времени. Оценивается как логическое значение false, если есть информация о нулевом времени ожидания.

if not value.time():
    # do stuff
3 голосов
/ 15 сентября 2009

Я не вижу ничего плохого в вашем методе, но вы можете сравнить его с "обнуленным" объектом времени.

someDateTime = datetime.datetime(2009, 4, 6, 0, 0)
someDateTime.time() == datetime.time(0)
2 голосов
/ 23 марта 2018

Для Python 3.5 и выше:

if value.hour == 0 and value.minute == 0 and value.second == 0 and value.microsecond == 0:
  # do stuff

Для питона ниже 3,5:

if not value.time():
  # do stuff

Объяснение: логическая оценка datetime.time экземпляра была изменена в python 3.5 :

В логическом контексте объект времени всегда считается истинным.

Изменено в версии 3.5: До Python 3.5 объект времени считался ложным, если он представлял полночь в UTC. Это поведение считалось неясным и подверженным ошибкам и было удалено в Python 3.5. См. Bpo-13936 для получения полной информации.

0 голосов
/ 15 сентября 2009

Другой вариант:

if not (value.hour or value.minute or value.second):
    # do stuff
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...