如何从用户输入的日期中减去?

时间:2018-02-21 13:01:20

标签: python python-3.x datetime

所以我试图从2018-02-22的用户输入中减去一天。我有点卡在第5行 - 我的朋友是在我前面突飞猛进建议我尝试这种方法减去一天。

在我的在线课程中,我还没有达到日期时间,所以我试图通过在线阅读帖子一起解决这个问题,但却遇到了错误:

TypeError:'datetime.datetime'对象的描述符'date'需要一个参数

from datetime import datetime, timedelta

date_entry = input('Enter a date in YYYY-MM-DD format')
year, month, day = map(int, date_entry.split('-'))
date1 = datetime.date()
new = date1.replace(day=date1.day-1, hour=1, minute=0, second=0, microsecond=0)

print (new)

所以如果我投入2018-02-22,我的目标是2018-02-21。

任何帮助都会很棒:)

3 个答案:

答案 0 :(得分:2)

首先,For i = 0 To lRow - 1 c = ActiveCell.Offset(i, 0).Value ActiveCell.Offset(i, 0).Value = dateofProject & " " & c Next i 最适合用于进行日期算术。您导入timedelta但不使用它。

timedelta

第二个问题是您没有正确初始化day = timedelta(days=1) newdate = input_datetime - day 对象。但在这种情况下,最好使用datetime和date以某种格式从输入字符串中解析日期时间。

strptime

答案 1 :(得分:2)

    from datetime import datetime, timedelta
    date_entry = input('Enter a date in YYYY-MM-DD format')
    date1 = datetime.strptime(date_entry, '%Y-%m-%d')
    print date1+timedelta(1)

答案 2 :(得分:1)

也许你需要这样的东西

from datetime import datetime, timedelta

date_entry = input('Enter a date in YYYY-MM-DD format ')

# convert date into datetime object
date1 = datetime.strptime(date_entry, "%Y-%m-%d")  

new_date = date1 -timedelta(days=1)  # subtract 1 day from date

# convert date into original string like format 
new_date = datetime.strftime(new_date, "%Y-%m-%d") 

print(new_date)

输出:

Enter a date in YYYY-MM-DD format 2017-01-01

'2016-12-31'