2017-04-25 122 views
0

我會用一個我堅持使用的示例代碼來問這個問題。 我有兩個問題,但他們有點問同樣的概念。 我試圖使用打印日期/時間:Python使用.format或lambda執行多個類模塊?

print(datetime.now().day, datetime.now().month, datetime.now().hour, datetime.now().minute) 

問題1: 但我不希望保留重新輸入datetime.now()所有的時間。有沒有辦法在Python中做到這一點?

像這樣?

print("{day} - {month} - {hour}:{minute}".format(datetiem.now()) 

很明顯,這是錯誤的,但你明白了。

問題2: 或者,有沒有辦法從像這樣一類的自動化模塊調用:

for item in ['day', 'month', 'hour', 'minute']: 
    print(datetime.now().item) 

感謝。

回答

1

,如果你只是想格式化日期時間,你可以做其中的一個:

from datetime import datetime 

dt = datetime.now() 

print("{0.day} - {0.month} - {0.hour}:{0.minute}".format(dt)) # 25 - 4 - 16:49 
print('{:%d - %m - %H:%M}'.format(dt))      # 25 - 04 - 16:49 

第二個使用format mini-languageformat specifiers for datetime

獲得屬性動態,使用getattr

for item in ['day', 'month', 'hour', 'minute']: 
    print(getattr(dt, item)) 
+0

優秀。謝謝! – mikenamator

0

關於Q1,你可以不喜歡

now = datetime.now() 
print(now.day, now.month, now.hour, now.minute) 
0

你說這個?

datetime.now().strftime("%Y-%m-%d %M:%H:%S") 
0

就拿一個類似的問題有人問看看here。有一個例子,他們使用str.format()就像你想要的那樣。

print "We are the {:%d, %b %Y}".format(today) 

對於其他日期時間指示,here爲它的文檔。

編輯爲澄清

如在文章中上面提到的,的strftime()和格式()現在將工作一樣PEP3101的。