[嗨,我正在尝试用python编写一个程序来计算两个日期之间的天数。我从用户那里得到了格式为2020年5月2日的输入。我了解到,首先我应该将字符串转换为日期并进行解析。我不知道该怎么做。请帮我。这是我尝试过的程序
from datetime import date
first_date(input)
sec_date(input)
con_date = datetime.strptime(first_date, '%d %m %Y').date()
con_date2 = datetime.strptime(first_date, '%d %m %Y').date()
delta = con_date2 - con_date
print(delta)
如果我以first_date的字符串May 2 2020
和sec_date的字符串Jun 30 2020
的形式输入,那么我该如何将该字符串转换为日期格式。 (i)输入应仅以上述格式输入。上面的代码不适用于我将字符串转换为日期。请帮助我将其转换为日期,并找出sec_date至first_date之间的天数
这应该有帮助
from datetime import date
#year, month, day
d0 = date(2020, 5, 2)
d1 = date(2020, 6, 30)
delta = d1 - d0
print(delta.days)
如果给您以“月日年”格式的日期,那么您需要更改datetime.strptime
调用以对该格式使用正确的日期格式。请参阅此documentation page,其中列出了所有时间格式选项。
在这种情况下,最接近的格式字符串似乎是'%b%d%Y',但请注意,由于May 2 2020
不会正确解析您的May 02 2020
示例,因为第一个选项不为零-papped。
您最好的选择可能是对提供给您的日期进行后处理,以将其零填充。这是一个如何工作的示例(假设Python 3将Python 2从input
更改为raw_input
):
from datetime import datetime
def normalize_date():
user_date = input()
if user_date.count(' ') < 2:
raise Exception("Error! Incorrect date format provided")
month, day, year = user_date.split(' ')
padded_day = day.zfill(2)
date_formatted = "{} {} {}".format(month, padded_day, year)
return datetime.strptime(date_formatted, '%b %d %Y').date()