是否有一种方法可以确定python datetime对象是否在创建对象时包含了时间属性?特别是,我想知道是否提供了分钟,秒或微秒。
例如,以下内容:
from datetime import datetime
d = datetime(2020,1,24)
# datetime.datetime(2020, 1, 24, 0, 0)
d.microsecond
# 0
# ideally, if function "has_seconds()" did exist...
if not d.has_seconds():
d = d.replace(second=59)
我正在使用一个接收日期时间对象的函数,我需要填写最初未提供的任何信息。但是,对于所有最初未提供的时间属性,datetime假定值为0。不幸的是,0表示小时,分钟,秒和微秒,因此我无法使用它进行检查。
如果有相关性,我正在使用Python 3.7。
datetime.datetime
实例将无法实现。如您所述,构造函数会自动使用0
填充缺失值。此外,除了其构造函数外,还有其他方法可以创建datetime.datetime
的实例。通过这些各种方法创建的实例之间没有有意义的区别。如果它们具有相同的基础值,则从设计上看它们是等效的并且是无法区分的。换句话说,datetime
模块旨在主动阻止您尝试执行的操作。
在不了解您的特定用例以及为什么需要这种行为的情况下,很难提出替代方案。
但是,如果您可以控制调用函数的代码,那么最好的选择是定义并接受自己的datetime.datetime
类,该类提供类似的构造函数,但不会隐式地将未指定的值替换为[C0 ]。函数的调用者必须传递类的实例而不是0
。一旦应用了自定义的“缺失值”逻辑,就可以创建一个完全填充的datetime.datetime
对象并继续。