最近我查看了SimpleDateFormat
的文檔,發現它們在處理字母解析方面存在一些不一致(在我看來)。SimpleDateFormat:不一致的模式字母
例如,看一下這些表示:
M: Month in year
D: Day in year
d: Day in month
「X在今年」比「在一個月X」一個更大的時間跨度,並因此有大寫字母所以這使得我感覺良好。
但後來有
w: Week in year
W: Week in month
這裏,信件被交換,這在我看來是完全反直覺的。看起來這兩個應該是相反的方式,以符合上面提到的「模式」。
另一個例子是不同小時的表示:
H: Hour in day (0-23)
k: Hour in day (1-24)
K: Hour in am/pm (0-11)
h: Hour in am/pm (1-12)
我有點明白了。大寫字母的小時以0開頭,小寫字母的小寫字母以小寫字母開頭1. 在這裏,兩個小寫字母應該交換,因爲不應該是同一個字母屬於同一類別? (H/h
在一天小時,K/k
在AM/PM小時)
所以我的問題是這樣的:會有這種看似違背直覺表示後面的原因是什麼?
我能想到的唯一原因是,這些模式字母中的一些是在稍後添加的,並且由於向下兼容性原因他們無法更改已經存在的字母。但除此之外,它對我來說沒有多大意義。
您將需要詢問API的設計者 – MadProgrammer