所以我试图从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。
任何帮助都会很棒:)
答案 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'