【问题标题】:What's wrong with this code using datetime?这段代码使用日期时间有什么问题?
【发布时间】:2018-02-02 01:16:43
【问题描述】:
import datetime

CurrentDate = datetime.date.today().strftime('%m/%d/%Y') 
print(CurrentDate)

UserInput =  input("When is your birthday? (mm/dd/yyyy) ")
birthday = datetime.datetime.strptime(UserInput, '%m/%d/%Y').date()
days = birthday - CurrentDate
print("your next birthday is in " + days )

它给了我这个错误信息:

TypeError: 不支持的操作数类型 -: 'datetime.date' 和 'str'

我尝试转换它们但没有结果。

【问题讨论】:

标签: python datetime


【解决方案1】:

您的问题是从 date 类型转换为 str ,反之亦然:

import datetime

CurrentDate = datetime.date.today()
print(CurrentDate.strftime('%m/%d/%Y'))

UserInput =  input("When is your birthday? (mm/dd/yyyy) ")
birthday = datetime.datetime.strptime(UserInput, '%m/%d/%Y').date()
days = birthday - CurrentDate
print("your next birthday is in " + str(days))

【讨论】:

    【解决方案2】:

    正如伯尼所说,CurrentDatestring

    import datetime
    
    CurrentDate = datetime.date.today().strftime('%m/%d/%Y') 
    print(CurrentDate)
    
    UserInput =  input("When is your birthday? (mm/dd/yyyy) ")
    birthday = datetime.datetime.strptime(UserInput, '%m/%d/%Y').date()
    current_date = datetime.datetime.strptime(CurrentDate, '%m/%d/%Y').date()
    print(birthday)
    
    days = (birthday - current_date
    print("your next birthday is in " + str(days) )
    

    你的算法可能还需要一些工作:)

    02/01/2018
    When is your birthday? (mm/dd/yyyy) 01/01/2018
    2018-01-01
    your next birthday is in -31 days, 0:00:00
    

    将调整后的时差除以天看起来更清晰:

    days = (birthday - current_date)/datetime.timedelta(days=1)
    print("your next birthday is in " + str(days) + " days")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-25
      • 2018-09-09
      相关资源
      最近更新 更多