2012-07-21 23 views
4

奇怪的行爲,這是我的資源鍵:檢票 - 與參數StringResourceModel

Expired {0} days ago 

這是StringResourceModel的定義:

new StringResourceModel("store.expired.tooltip", null, Days.daysBetween(expirationDate, refDate)); 

預期的結果會是這樣的Expired 20 days前,但實際結果是Expired P20D ago

任何想法是什麼造成這種情況?我想我做everything right但不確定。

+1

'days#daysBetween'是什麼?它返回什麼?如果它返回一個對象,它是什麼類,並且這個類是否實現'toString()'? – npe 2012-07-21 14:29:36

+0

@npe - 查看我的回答 – 2012-07-21 14:32:45

+0

@DonRoby:是的,你剛剛得到我的祝福! :) – npe 2012-07-21 14:33:23

回答

8

這實際上是您使用joda-time的錯誤。見javadoc joda Days

Days.daysBetween(expirationDate, refDate)返回一個joda Days對象,其toString()方法返回ISO8601持續時間格式字符串,這就是您所看到的。

使用Days.daysBetween(expirationDate, refDate).getDays()來代替它將使其成爲一個整數,應該正確格式化。

+0

所以重點了解了我從未想到過的StringResourceModel;我只是假定它返回一個int。現在是時候給我打電話了:-)。 TX! – 2012-07-21 14:34:20