MM / DD / YYYY变量转换m,d和y的日期

时间:2016-05-13 02:06:58

标签: python date datetime

我很难找到将用户给出的日期输入转换为mm / dd / yyyy为3个变量的最佳方法。我无法拆分它,因为我收到错误,因为它是一个' float'。

>>> date=3/2/2016
>>> date.split('/')
Traceback (most recent call last):
  File "<pyshell#152>", line 1, in <module> date.split('/')
AttributeError: 'float' object has no attribute 'split'

我需要添加什么来确保它不会通过除法来评估日期?

def main():
    date=input("Enter date mm/dd/yyyy: ") 

我希望输入日期为mm / dd / yyyy,然后将此方法转换为3个变量m =月d =日y =年

最好的方法是什么?

4 个答案:

答案 0 :(得分:2)

尝试str.split

>>> test_date = "05/12/2016"
>>> month, day, year = test_date.split('/')
>>> print("Month = %s, Day = %s, Year = %s") % (month, day, year)
Month = 05, Day = 12, Year = 2016

答案 1 :(得分:0)

我在下面编写了这段代码,它的工作原理非常好。

>>> date='3/2/2016'
>>> new=date.split('/')
>>> new
['3', '2', '2016']
>>> 
>>> m,d,year=new
>>> m
'3'
>>> d
'2'
>>> year
'2016'
>>> 

就像Jessica Smith已经指出的那样,date = 3/2/2016评估表达式并对数字进行分割。它必须是要拆分的字符串字符串类型。

答案 2 :(得分:0)

错误&#34;&#39;浮动&#39;对象没有属性&#39; split&#39;&#34; 建议您的示例中的type(date) == float暗示您尝试使用Python 2解释器运行Python 3代码{{1}将其输入计算为Python表达式,而不是将其作为字符串返回。

要在Python 2上以字符串形式显示日期,请使用input()代替raw_input()

input()

要使它适用于Python 2和3,请在脚本顶部添加:

date_string = raw_input("Enter date mm/dd/yyyy: ") 

如果您需要旧的Python 2 try: # make input() and raw_input() to be synonyms input = raw_input except NameError: # Python 3 raw_input = input 行为;你可以明确地致电input()

要验证输入日期,您可以use datetime.strptime()并抓住eval()

ValueError

from datetime import datetime try: d = datetime.strptime(date_string, '%m/%d/%Y') except ValueError: print('wrong date string: {!r}'.format(date_string)) 保证输入日期有效,否则引发.strptime()。成功时,ValueErrord.yeard.month按预期工作。

全部放在一起(未经测试):

d.day

请参阅Asking the user for input until they give a valid response

如果您必须:

,则可以使用#!/usr/bin/env python from datetime import datetime try: # make input() and raw_input() to be synonyms input = raw_input except NameError: # Python 3 raw_input = input while True: # until a valid date is given date_string = raw_input("Enter date mm/dd/yyyy: ") try: d = datetime.strptime(date_string, '%m/%d/%Y') except ValueError: # invalid date print('wrong date string: {!r}'.format(date_string)) else: # valid date break # use the datetime object here print("Year: {date.year}, Month: {date.month}, Day: {date.day}".format(date=d)) 代替.split('/')
.strptime()

它不会验证这些值是否在格里高利历中形成有效日期。

答案 3 :(得分:-1)

<强>尝试:

def main():
    month, day, year = [int(x) for x in raw_input("Enter date mm/dd/yyyy: ").split('/')]
    print "Month: {}\n".format(month), "Day: {}\n".format(day), "Year: {}".format(year)

main()

<强>输出:

Enter date mm/dd/yyyy: 03/09/1987
Month: 3
Day: 9
Year: 1987