12

我想写一个函数,它接受用户输入的日期,用搁置函数存储它,并在调用时打印三十天后的日期。

我试图从简单的事情开始,例如:

import datetime

def getdate():
    date1 = input(datetime.date)
    return date1

getdate()

print(date1)

这显然是行不通的。

我已经使用了上述问题的答案,现在我的程序的那个部分可以工作了!谢谢!现在进入下一部分:

我正在尝试编写一个简单的程序,该程序按照您指示我获取日期的方式获取日期并增加 30 天。

import datetime
from datetime import timedelta

d = datetime.date(2013, 1, 1)
print(d)
year, month, day = map(int, d.split('-'))
d = datetime.date(year, month, day)
d = dplanted.strftime('%m/%d/%Y')
d = datetime.date(d)+timedelta(days=30)
print(d)

这给了我一个错误:year,month,day = map(int, d.split('-')) AttributeError: 'datetime.date' object has no attribute 'split'

最终我想要的是 01/01/2013 + 30 天并打印 01/30/2013。

提前致谢!

4

5 回答 5

26

input()方法只能从终端获取文本。因此,您必须想办法解析该文本并将其转换为日期。

你可以通过两种不同的方式来解决这个问题:

  • 要求用户分别输入日期的 3 个部分,所以调用input()3 次,将结果转化为整数,并构建一个日期:

    year = int(input('Enter a year'))
    month = int(input('Enter a month'))
    day = int(input('Enter a day'))
    date1 = datetime.date(year, month, day)
    
  • 要求用户以特定格式输入日期,然后将该格式转换为年、月和日的三个数字:

    date_entry = input('Enter a date in YYYY-MM-DD format')
    year, month, day = map(int, date_entry.split('-'))
    date1 = datetime.date(year, month, day)
    

这两种方法都是示例;例如,没有包含错误处理,您需要阅读 Python 异常处理以自己弄清楚。:-)

于 2013-03-05T14:58:19.947 回答
2

谢谢。我一直在试图弄清楚如何向 datetime.datetime(xxx) 添加信息,这很好地解释了它。如下

datetime.datetime(year,month, day, hour, minute, second) 参数都是整数。有用!

于 2018-03-31T02:44:30.960 回答
1

使用 dateutils 模块

    from dateutil import parser

    date = parser.parse(input("Enter date: "))
于 2020-01-02T09:34:10.193 回答
0

你也可以使用

import datetime
time_str = input("enter time in this format yyyy-mm-dd")
time=datetime.datetime.strptime(time_str, "%Y-%m-%d") 

datetime.datetime.strptime() 以您给定的格式去除给定的字符串。

于 2021-08-08T17:44:48.587 回答
-1

检查库为

导入日期时间

并遵循语法

日期 = datetime.datetime(2013, 1, 1)

于 2021-05-21T17:29:18.830 回答