2

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

3 回答 3

5

您需要将这些日期解析为更有意义的内容。使用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

于 2013-12-22T03:58:29.510 回答
2

如果您期望表单中的输入,"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('...'))
于 2013-12-22T03:55:02.137 回答
-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为单位

于 2021-02-05T21:32:28.597 回答