2015-12-24 27 views
0

我在Python 2.7中編寫了一個CPython程序,以查找用戶生日和當前日期之間的天數。Python中的日期到字符串轉換失敗

我能做到這一點,當我試圖使用日期方法,但是當我嘗試使用日期時間方法失敗。當我使用日期時間方法時,當前日期隨時間而來,如果嘗試減小用戶出生日期,它會給出錯誤。 (例如:x = currentDate.strftime('%m /%d /%Y'))將它傳遞給一個變量,然後轉換爲日期(例如:currentDate2 = datetime.strftime('x',date_format))但失敗。

能否請你幫助我理解爲什麼它是

from datetime import datetime 
    from datetime import date 
    currentDate3 = '' 
    currentDate = datetime.today() 
    currentDate1 = date.today() 
    currentDate3 = currentDate.strftime('%m/%d/%Y') 
    date_format = "%m/%d/%Y" 
    currentDate2 = datetime.strftime('currentDate3', date_format) 
    # The above line is giving error "descriptor 'strftime' requires a 'datetime.date' object but received a 'str'" 
    print(currentDate3) 
    print(currentDate1) 
    print(currentDate.minute) 
    print(currentDate) 

    userInput = raw_input('Please enter your birthday (mm/dd/yyyy)') 
    birthday = datetime.strptime(userInput, '%m/%d/%Y').date() 
    print(birthday) 

    days = currentDate1 - birthday 
    days = currentDate2 - birthday 
    print(days.days) 

回答

1

您試圖格式化字符串而不是日期時間:

currentDate2 = datetime.strftime('currentDate3', date_format) 

雖然,你並不需要格式化當前日期到這個任務的字符串 - 你需要它是datetime爲了計算它和用戶輸入的日期字符串之間有多少天,你用.strptime()加載到datetime

工作樣本:

from datetime import datetime 

currentDate = datetime.now() 

userInput = raw_input('Please enter your birthday (mm/dd/yyyy)') 
birthday = datetime.strptime(userInput, '%m/%d/%Y') 

days = (currentDate - birthday).days 
print(days) 
+0

感謝亞歷克斯你的建議是幫助我達到的效果:) 我只需要明白,如果我們可以格式化userInput這串入的日期時間,爲什麼我們不能格式化我們從datetime方法派生的字符串 –

相關問題