以下測試失敗:'86
生日的格式爲2068
。我怎樣才能格式化爲1986
?如何強制java.time.LocalDate假定19世紀爲YY年份模式?
@Test
public void testBirthday() {
assertEquals("1986-08-07", java.time.LocalDate.parse("070886",
java.time.format.DateTimeFormatter.ofPattern("ddMMyy")));
}
與失敗:
java.lang.AssertionError: expected:<1986-08-07> but was:<2086-08-07>
這是非常不同的,以org.joda.time
庫,將正確的假設19'
這裏。
/旁註:關於「重複」問題中的明顯答案,我不認爲這是重複的!
的滑稽的答案是使用'org.joda.time'。 – Bathsheba
不,它不是。 「喬達」實際上是「棄用」,不再發展。至少作者自己建議現在切換到java8'java.time'。 – membersound
只需要注意,這是記錄的行爲:「如果字母數爲2,則使用縮小的兩位數形式。對於打印,這將輸出最右邊的兩位數。對於解析,這將使用基數值2000年,導致在2000年至2099年範圍內的一年。「不幸的是,它沒有說如何改變那種行爲。您可能可以指定一個單獨的ResolverField,但它感覺有點做作。您可能會發現,只需手動「修復」字符串即可使用四位數年份。 –