如何通过获取日期作为用户输入来查找两个日期之间的差异

时间:2013-12-22 03:50:14

标签: python date datetime difference

我需要通过将日期作为用户输入来查找两个日期之间的差异。我试图使用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

3 个答案:

答案 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

中找到今天的日期和用户输入的日期之间的差异