我如何以日期时间格式输入



我写了一个代码,从用户获取start_dateend_date,但它抛出了一个错误。
代码如下:

from datetime import datetime
start_date = datetime.strptime(input('Enter Start date in the format m/d/y'), '%m/%d/%Y')
end_date = datetime.strptime(input('Enter End date in the format m/d/y'), '%m/%d/%Y')
dates=['4/6/2013', '5/4/2013', '6/26/2013', '7/26/2013', '9/5/2013', '10/7/2013', '10/12/2013', '4/12/2014', '5/10/2014', '6/12/2014', '7/19/2014', '8/15/2014', '9/17/2014', '4/21/2015', '5/28/2015', '6/26/2015']
# this line creates a list of datetime objects from the given strings in list dates  
dt_dates = [datetime.strptime(date, '%m/%d/%Y') for date in dates]
in_between_dates = []
for d in dt_dates:
    if d >= start_date and d <= end_date:
        in_between_dates.append(d)
print [d.strftime('%m/%d/%Y') for d in in_between_dates]

,输入1/1/2014后弹出错误如下:

Enter Start date in the format m/d/y1/1/2014
Traceback (most recent call last):
  File "C:UsersAyushDesktopUWW Data Examplesnew csvstemp.py", line 9, in <module>
    start_date = datetime.strptime(input('Enter Start date in the format m/d/y'), '%m/%d/%Y')
TypeError: must be string, not int

由于您正在使用print语句,似乎您正在使用Python 2。x。

在Python 2中。x, input()实际上评估结果并返回,所以,如果你输入像1/1/2014或一些数字,你会得到一个整数(在这种情况下是1除以1除以2014 -> 0),而不是字符串。使用input()通常是危险的,因为用户可以输入任何东西,并且会被计算。

使用raw_input()来获取字符串,例如-

start_date = datetime.strptime(raw_input('Enter Start date in the format m/d/y'), '%m/%d/%Y')
end_date = datetime.strptime(raw_input('Enter End date in the format m/d/y'), '%m/%d/%Y')

在Python 3中。在Python 2中,raw_input()被重命名为input(),因此在Python 3中使用input()与在Python 2中使用raw_input()相同。x。

对于Python 2使用raw_input代替input。对于Python 3, input可以。

相关内容

  • 没有找到相关文章

最新更新