2016-08-09 51 views
-2
MONTHS = ['January', 'February', 'Match', 'April', 'May', 'June', 
     'July', 'August', 'September', 'October', 'November', 'December'] 
def date_convert(s): 


    y = s[:4] 
    m = int(s[5:-3]) 
    d = s[8:] 
    if m < 10: 
     nm = int(m[1:]) 
     month_name = MONTHS[nm - 1] 
    else: 
     month_name = MONTHS[m - 1] 

    result= ?????? 
    return result 


s = '2000/06/24' 
r = date_convert(s) 
print(r) 

我正在進行期末考試視圖(python 3.0 +),並且我一直在做着整天的練習。我突然不知道如何將month_name a,y作爲一個字符串使用'result' (result = ???)。然後將其返回到主程序。 以下是我需要的結果:將2000/06/24轉換爲2000年6月24日。我的大腦現在不工作,請別人幫助我。非常感謝。我不能使用任何引入功能。只是幫助我把任何東西放在一起作爲一個字符串。再次感謝。將日期從表單yyyy/mm/dd轉換爲表單month_name日,年

+0

閱讀有關'strptime':https://docs.python.org/ 3.4 /庫/日期。html#strftime-strptime-behavior – DeepSpace

+0

你的意思是字符串格式?你已經有了月份名稱,年份和日期。所有你需要做的就是把它們放在一起。快速谷歌指向http://www.python-course.eu/python3_formatted_output.php教程。 –

+0

另外'm'和'nm'是* strings *,所以'm <10'將會失敗。你首先要轉換成一個整數,順便說一句,如果你不需要正確地轉換成整數,那麼你就不需要截斷'0'。 –

回答

0
MONTHS = ['January', 'February', 'Match', 'April', 'May', 'June', 
     'July', 'August', 'September', 'October', 'November', 'December'] 
def date_convert(s): 
    y = s[:4] 
    m = int(s[5:-3]) 
    d = s[8:] 
    month_name = MONTHS[m-1] 

result= month_name + ' ' + d + ' ' + y 
return result 
s = '2000/06/24' 
r = date_convert(s) 
print r 

我沒有在Python 2只更改打印功能

0

試試這個:

from datetime import datetime 

d = "2000/06/24" 
date_obj = datetime.strptime(d, "%Y/%m/%d") 
formatted_date = datetime.strftime(date_obj, "%B %d %Y") 
print(formatted_date) 

這樣就可以使d爲在您正在使用的功能的參數傳遞的變量。

strptime(): is used to convert the string of the date to a date object. 
strftime(): is used to convert the date object to string. 
0

通常您不會手動解析/重新格式化/轉換日期。 有許多美麗的功能,甚至模塊。 問題是日期轉換過程雖然看起來很簡單 很複雜且容易出錯。這就是爲什麼它不會每次都被重新實現,但是在Python核心模塊中(datetime首先)在儘可能多的細節中實現了 。

使用strptime解析日期和strftime格式化日期:

>>> import datetime 
>>> s = datetime.datetime.strptime("2000/06/24", "%Y/%m/%d") 
>>> print s.strftime('%B %d %Y') 

兩個功能支持特殊格式化字符,如%Y%m

%Y Year with century as a decimal number. 
%m Month as a decimal number [01,12]. 
%d Day of the month as a decimal number [01,31]. 
%B Locale’s full month name. 

你可以找到更多關於它在這裏:

另外,請檢查這個問題,它非常接近你 額外的答案:

如果它是一個鍛鍊; Tibial, ,你必須實現轉換功能 在你自己的,這也很好。你的實現幾乎是正確 但你已經錯過了一些要點:

def date_convert(s): 
    "Manual date conversion" 

    y = s[:4] 
    m = int(s[5:-3]) 
    d = s[8:] 
    month_name = MONTHS[m - 1] 
    return "%s %s, %s" % (month_name, d, y) 

你不要在你的函數需要if。 而且你不需要兩次int轉換,你只需要第一個。

您可以更簡單地同寫:

def date_convert(s): 
    "Manual date conversion" 

    return "%s %s, %s" % (MONTHS[int(s[5:-3])-1], s[8:], s[:4]) 
相關問題