日期时间 class 和模块不能一起工作?
Datetime class and module can't work together?
我想了解为什么模块和 class“datetime”不能一起工作。在下面的代码中,我有 3 个选择:
- 否则date.today不起作用
- 否则 strptime 不起作用
- 否则它们不能一起工作:“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))
我尝试了很多方法,比如创建一些函数,然后是 class,但没有任何效果。如果有人可以向我解释原因或给我另一种方法来做到这一点?
感谢您的帮助,抱歉我的英语不是母语。如果你有任何问题,我在这里
#Edit :按照下面的建议,我试过了:
'''
导入“从日期时间导入日期”
d0 = datetime.combine(date.today(), datetime.min.time())
'''
答案是:AttributeError: 模块 'datetime' 没有属性 'combine'
#Edit_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))
datetime.date
是一个日期 - 例如,当我写这篇文章时,它是 2021 年 7 月 5 日。
datetime.datetime
是日期的特定时间 - 例如 14:04 2021 年 7 月 5 日。
您不能从 datetime
中减去 date
,那样的话它们没有可比性。您可以在它们之间进行转换,例如使用 datetime.combine()
从 date
和 time
创建 datetime
或使用 date()
实例方法从 datetime
到 date
。如果您想继续使用 strptime
来解析您的输入而不是切换到 fromisoformat()
or using a third party library like dateutil
.
,后者可能是最简单的选择
您使用 combine()
编辑的尝试按预期工作。您已将输入日期修改为 datetime
实例,因此当您减去时会得到 timedelta
。 timedelta
s 包含比天数更精确的精度 - 无论您是从输入创建 datetime.date()
实例还是使用 combine()
将当前日期转换为 datetime()
,您都会看到类似的内容.您可以使用 days
字段获取 timedelta 中的天数,丢弃 hours/minutes.
您可以像这样从日期时间模块导入 类
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())
请参考这里的回答:
我想了解为什么模块和 class“datetime”不能一起工作。在下面的代码中,我有 3 个选择:
- 否则date.today不起作用
- 否则 strptime 不起作用
- 否则它们不能一起工作:“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))
我尝试了很多方法,比如创建一些函数,然后是 class,但没有任何效果。如果有人可以向我解释原因或给我另一种方法来做到这一点?
感谢您的帮助,抱歉我的英语不是母语。如果你有任何问题,我在这里
#Edit :按照下面的建议,我试过了: ''' 导入“从日期时间导入日期” d0 = datetime.combine(date.today(), datetime.min.time()) '''
答案是:AttributeError: 模块 'datetime' 没有属性 'combine'
#Edit_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))
datetime.date
是一个日期 - 例如,当我写这篇文章时,它是 2021 年 7 月 5 日。
datetime.datetime
是日期的特定时间 - 例如 14:04 2021 年 7 月 5 日。
您不能从 datetime
中减去 date
,那样的话它们没有可比性。您可以在它们之间进行转换,例如使用 datetime.combine()
从 date
和 time
创建 datetime
或使用 date()
实例方法从 datetime
到 date
。如果您想继续使用 strptime
来解析您的输入而不是切换到 fromisoformat()
or using a third party library like dateutil
.
您使用 combine()
编辑的尝试按预期工作。您已将输入日期修改为 datetime
实例,因此当您减去时会得到 timedelta
。 timedelta
s 包含比天数更精确的精度 - 无论您是从输入创建 datetime.date()
实例还是使用 combine()
将当前日期转换为 datetime()
,您都会看到类似的内容.您可以使用 days
字段获取 timedelta 中的天数,丢弃 hours/minutes.
您可以像这样从日期时间模块导入 类
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())
请参考这里的回答: