2012-05-09 28 views
1

我不得不接受一個字符串表示的日期通過time.strptime類似於%d%M%Y的格式來處理,但事情是,當這一天數小於10,則這一天將以%d格式所要求的一位數字顯示,而不是兩位數字。自定義格式指令

這意味着,

'8052012' 

將transalted爲

day 08, month 05, year 2012 

但與字符串

'2052012' 

strptime給我

day 20, month 5, year 2012 

代替

day 2, month 5, year 2012 

有沒有解決這個默認行爲的方法嗎? (也許是爲了強制%m應該是一個2位數字,所以strptime將無法選擇使用剩下的那一天嗎?)

編輯:請注意在輸入字符串上,月總是有兩位數字即使它可以用一個表示。這裏的問題只是一天或兩個數字,取決於幅度...

+0

你怎麼能告訴我們,如果日期是20/5/2012或2012年2月5日? –

+0

通過上下文...我收到某些實際日期這個字符串,所以20-05-2012還沒有happend還沒有的話,那是2012-05-02 –

+0

什麼20/04?這不是曖昧嗎? –

回答

6

你知道更多關於這個數據比time.strptime可以從格式字符串知道。

通過預先'0'消除不確定性時的日期字符串有7

+0

好的,這是一種可能性......我在尋找內在的解決問題的Python庫中的內容,但如果沒有辦法,那麼我會照你說的去做...... –

+0

顯然沒有辦法,因爲1112010可能是1月11日或11月1日。 –

+0

nope,因爲月總是有兩個數字...我會通過修改我的帖子來指定... –

1

對於我來說,它看起來像問題,打印該字符串的長度。通常%d返回2位數字(見:http://docs.python.org/library/time.html#time.strftime)。也許你將這樣的字符串轉換爲long或int值並打印出來?如果你真的需要解析這樣的值,那麼假設你應該驗證這個入口的長度。

0

你可以嘗試從結尾開始計算:

dd='2052012' 
print 'Day', dd[:-6], 'Month:',dd[-6:-4], 'Year: ', dd[-4:]