Datetime类和模块不能一起工作?

2024-10-04 05:21:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我想了解为什么模块和类“datetime”不能一起工作。在下面的代码中,我有3种选择:

  1. 今天不行
  2. 否则strtime就不行了
  3. 否则它们不能一起工作:“TypeError:不支持的操作数类型-: “datetime.datetime”和“datetime.date”
import datetime

film_name = input("What is the movie name ?")

Date = input("When it's up ?")
date_format = "%d/%m/%y"

d1 = datetime.datetime.strptime(Date, date_format)
d0 = datetime.date.today()
print(d0,d1)

delta = d1 - d0

print("Il reste {} dodos avant la sortie de {}".format(delta, film_name))

我尝试了很多事情,比如创建一些函数,然后创建一个类,什么都不做。如果有人能向我解释为什么或者给我另一种方法来做这件事

谢谢你的帮助,对不起我的英语,不是我的母语。如果你有任何问题,我在这里

#编辑:根据下面的建议,我尝试了: ''' 导入“从日期时间导入日期” d0=datetime.combine(date.today(),datetime.min.time()) '''

答案是:AttributeError:模块“datetime”没有属性“combine”

#编辑_2:如果我使用: ''' d0=datetime.datetime.combine(datetime.date.today(),datetime.datetime.min.time()) ''' 它几乎起作用了,我得到:

休息304天,0:00:00 dodos avant la sortie de Avatar

但我还能看到时间吗

#Edit3

如果您需要相关建议,请查看评论。正确答案是:


import datetime

film_name = input("What is the movie name ?")

Date = input("When it's up ?")
date_format = "%d/%m/%y"

d1 = datetime.datetime.strptime(Date, date_format)
d0 = datetime.datetime.combine(datetime.date.today(), datetime.datetime.min.time())

d2 = (d1 - d0).days

print("Il reste {} dodos avant la sortie de {}".format(d2, film_name))

Tags: nameformatinputtodaydatetimedatelad1
2条回答

您可以像这样从datetime模块导入类

from datetime import date, datetime

# ...

d1 = datetime.strptime(Date, date_format)
d0 = datetime.combine(date.today(), datetime.min.time())

或者使用模块本身

import datetime

# ...

d1 = datetime.datetime.strptime(Date, date_format)
d0 = datetime.datetime.combine(datetime.date.today(), datetime.datetime.min.time())

请参阅这里的答案:https://stackoverflow.com/a/1937636/9190640

datetime.date是一个日期-例如,我写这篇文章时,它是2021年7月5日。 datetime.datetime是日期上的特定时间-例如2021年7月5日14:04

你不能从一个datetime中减去一个date,它们是不可比的。您可以在它们之间进行转换,例如使用datetime.combine()datetime创建一个datetime,或者使用date()实例方法从datetime截断为date。如果您希望继续使用strptime来解析输入,而不是切换到^{}或使用第三方库(如^{}),则后者可能是最简单的选择

您使用combine()编辑的尝试按预期工作。您已将输入日期修改为一个datetime实例,因此,当您进行减法运算时,将得到一个timedeltatimedelta的精度比天数更高-无论您是从输入创建datetime.date()实例还是使用combine()将当前日期转换为datetime(),您都会看到类似的结果。您可以使用days字段获取timedelta中的天数,丢弃小时/分钟

相关问题 更多 >