Python 3.2 输入日期函数

13 投票
5 回答
163408 浏览
提问于 2025-04-17 18:00

我想写一个函数,用户输入一个日期,然后用shelve函数把这个日期存起来,等到调用的时候能打印出30天后的日期。

我想先从简单的开始,比如:

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'对象没有'split'这个属性。

最终我想要的效果是把01/01/2013加上30天,结果打印出01/30/2013。

提前谢谢你!

5 个回答

2

使用 dateutils 模块

    from dateutil import parser

    date = parser.parse(input("Enter date: "))
2

谢谢。我一直在想怎么往datetime.datetime(xxx)里添加信息,这个解释得很好。具体如下:

datetime.datetime(year, month, day, hour, minute, second) 这里的参数都是整数。这样就可以用了!

27

input() 方法只能从终端获取文本。所以你需要想办法把这些文本解析成日期。

你可以用两种不同的方法来实现:

  • 让用户分别输入日期的三个部分,也就是说要调用 input() 三次,把结果转换成整数,然后组合成一个日期:

    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 的异常处理来解决这个问题。:-)

撰写回答