Python 3.2输入日期函数

Gre*_*106 7 python datetime input python-3.x

我想写一个函数,它接受用户输入的日期,用shelve函数存储它,并在调用后30天打印日期.

我想尝试一些简单的事情:

import datetime

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

getdate()

print(date1)
Run Code Online (Sandbox Code Playgroud)

这显然不起作用.

我已经使用了上述问题的答案,现在我的程序部分正在运行!谢谢!现在是下一部分:

我正在尝试编写一个简单的程序,按照你指示我的方式获取日期并增加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)
Run Code Online (Sandbox Code Playgroud)

这给了我一个错误:年,月,日= map(int,d.split(' - '))AttributeError:'datetime.date'对象没有属性'split'

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

提前致谢!

Mar*_*ers 17

input()方法只能从终端获取文本.因此,您必须找到一种方法来解析该文本并将其转换为日期.

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

  • 要求用户分别输入日期的3个部分,因此请调用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)
    
    Run Code Online (Sandbox Code Playgroud)
  • 要求用户以特定格式输入日期,然后将该格式转换为年,月,日三个数字:

    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)
    
    Run Code Online (Sandbox Code Playgroud)

这两种方法都是例子; 例如,没有包含错误处理,您需要阅读Python异常处理以便自己解决这个问题.:-)

  • dateutil可以自动解析各种字符串格式的日期。 (2认同)
  • @wRAR:当然,但那是下一个级别;重要的部分是了解 `input()` 是如何工作的。 (2认同)