查找python datetime是否没有时间信息

T. *_*one 2 python datetime

我想捕获像这样的值(在日期时间没有'时间信息'):

datetime.datetime(2009, 4, 6, 0, 0)
Run Code Online (Sandbox Code Playgroud)

除了测试小时/分钟/秒之外,还有更好的方法来检测这些值吗?

if value.hour == 0 and value.minute == 0 and value.second == 0:
     # do stuff
Run Code Online (Sandbox Code Playgroud)

han*_*ims 12

时间方法在这里工作.如果没有时间信息,则评估为布尔值false.

if not value.time():
    # do stuff
Run Code Online (Sandbox Code Playgroud)

  • 嗯,干净 (3认同)
  • 警告:此功能不再适用于Python 3.5+ (2认同)

spg*_*spg 10

对于 python 3.5 及以上版本:

if value.hour == 0 and value.minute == 0 and value.second == 0 and value.microsecond == 0:
  # do stuff
Run Code Online (Sandbox Code Playgroud)

对于低于 3.5 的 python:

if not value.time():
  # do stuff
Run Code Online (Sandbox Code Playgroud)

datetime.time说明:实例的布尔计算在 python 3.5 中已更改

在布尔上下文中,时间对象始终被认为是 true。

版本 3.5 中的更改:在 Python 3.5 之前,如果时间对象表示 UTC 午夜,则该时间对象被认为是 false。这种行为被认为是晦涩且容易出错的,并已在 Python 3.5 中删除。有关完整详细信息,请参阅 bpo-13936。


Mar*_*ark 6

我认为您的方法没有任何问题,但您可以将其与“归零”时间对象进行比较。

import datetime
dt = datetime.datetime(2009, 4, 6, 0, 0)
dt.time() == datetime.time()
Run Code Online (Sandbox Code Playgroud)