2012-01-31 46 views
3

刪除前導零。如果我使用Matplotlib DateFormatter,像這樣:從白天的時間Matplotlib DateFormatter

mydateformatter = DateFormatter("%b %d %I:%M %p", self._tz) 

我會像日期(注意時間部分有一個前導零):

2011年11月27日 03:00 PM

相反,我想失去對時間的前導零(更多的人這樣),如:

2011年11月27日 3:00 PM

有沒有辦法做到這一點?

回答

5

注意:請參閱編輯歷史瞭解下面評論中的討論。這篇文章已被重寫以反映它們。

它不能使用標準的日期轉換說明符來完成,這些說明符在python文檔中列出(與C標準化的相同)。但是,可能有依賴於平臺的方式來完成這種格式。像這樣的代碼中的位可能會派上用場:

# Set the default spec to use -- uglier is better than broken. 
hour_fmt = '%I' 

# If we're running on a platform that has an hour spec w/o leading zero 
# then use that one instead. 
if sys.platform.startswith('linux'): 
    hour_fmt = '%l' 
elif sys.platform.startswith('win'): 
    hour_fmt = '%#I' 
# etc 

mydateformatter = DateFormatter("%b %d " + hour_fmt + ":%M %p", self._tz) 

我已確認%l工作在Linux上和OP已經確認「%#I`在Windows上運行。

+0

你從哪裏得到%l?在我看到的strftime頁面上(http://www.tutorialspoint.com/python/time_strftime.htm)沒有這樣的指令。無論如何,這不起作用;相反,我有沒有任何小時的地方,如:「Nov 24 20122:35 PM」 – Chelonian 2012-01-31 19:37:26

+0

非常有趣 - 其實,我騙了一點,並使用C'strftime()'函數的手冊頁,它具有python中的'time.strftime()'的格式大致相同。我應該指出,儘管python文檔沒有提及(!),但它對我使用'time.strftime()'起作用。我是Python 2.7.2的用戶。 'matplotlib'文件似乎表明它會使用'strftime'。 – FatalError 2012-01-31 19:44:27

+0

Aha ...根據文檔:「某些平臺上可能支持其他指令,但只有這裏列出的指令具有ANSI C標準化的含義。」換句話說,你的平臺的'strftime()'可能不支持'%l'。將更新答案以反映這一點。 – FatalError 2012-01-31 20:02:36