我需要通过将日期作为用户输入来查找两个日期之间的差异。我试图使用raw_input
获取日期,但我收到了错误消息。我正在使用2.7版本的python。
import time
from datetime import date
day1 = int(raw_input("enter the date in this format (yyyy:mm:dd)")
day2 = int(raw_input("enter the date in this format (yyyy:mm:dd)")
diff = day2-day1
print diff
答案 0 :(得分:2)
您需要将这些日期解析为更有意义的内容。使用datetime.datetime.strptime()
方法:
from datetime import datetime
day1 = raw_input("enter the date in this format (yyyy:mm:dd)")
day2 = raw_input("enter the date in this format (yyyy:mm:dd)")
day1 = datetime.strptime(day1, '%Y:%m:%d').date()
day2 = datetime.strptime(day2, '%Y:%m:%d').date()
diff = day2 - day1
print diff.days
datetime.datetime.date()
方法只返回生成的datetime
对象的日期部分。
答案 1 :(得分:1)
如果您期望"yyyy:mm:dd"
形式的输入,则不能简单地将其投射到int
。
除了strptime
,您可以自己解析输入。
day1 = [int(i) for i in raw_input('...').split(':')]
d1 = datetime.date(*day1)
day2 = [int(i) for i in raw_input('...').split(':')]
d2 = datetime.date(*day2)
diff = d2 - d1
print diff.days
感谢@JF Sebastian,更简单的方法是使用lambda
定义:
str2date = lambda s: datetime.date(*map(int, s.split(':')))
只需致电:
date = str2date(raw_input('...'))
答案 2 :(得分:-1)
from datetime import date
import datetime
date1= datetime.date.today()
date_1=print(date1.strftime("The date of order: %d/%m/%Y"))
year = int(input('Enter a year: '))
month = int(input('Enter a month: '))
day = int(input('Enter a day: '))
date2 = datetime.date(year, month, day)
date_2= print(date2.strftime("Payment due date: %d/%m/%Y"))
difference=(date2-date1).days
print("The number of days for payment is: ", difference)
它是一个程序,允许用户在 DAYS
中找到今天的日期和用户输入的日期之间的差异