正確獲取星期幾(Calendar.DAY_OF_WEEK)javascript
Java代碼 java
星期日爲一週的第一天 | SUN | MON | TUE | WED | THU | FRI | SAT |
DAY_OF_WEEK返回值 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
星期一爲一週的第一天 | MON | TUE | WED | THU | FRI | SAT | SUN |
DAY_OF_WEEK返回值 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
如下參考:app
1. 在獲取月份時,Calendar.MONTH + 1 的緣由
Java中的月份遵循了羅馬歷中的規則:當時一年中的月份數量是不固定的,第一個月是JANUARY。而Java中Calendar.MONTH返回的數值實際上是當前月距離第一個月有多少個月份的數值,JANUARY在Java中返回「0」,因此咱們須要+1。spa
2. 在獲取星期幾 Calendar.DAY_OF_WEEK – 1 的緣由
Java中Calendar.DAY_OF_WEEK其實表示:一週中的第幾天,因此他會受到 第一天是星期幾 的影響。
有些地區以星期日做爲一週的第一天,而有些地區以星期一做爲一週的第一天,這2種狀況是須要區分的。
看下錶的返回值ip
星期日爲一週的第一天 | SUN | MON | TUE | WED | THU | FRI | SAT |
DAY_OF_WEEK返回值 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
星期一爲一週的第一天 | MON | TUE | WED | THU | FRI | SAT | SUN |
DAY_OF_WEEK返回值 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
因此Calendar.DAY_OF_WEEK須要根據本地化設置的不一樣而肯定是否須要 「-1」
Java中設置不一樣地區的輸出能夠使用 Locale.setDefault(Locale.地區名) 來實現。ci
System.out.println(calendar.get(Calendar.DAY_OF_WEEK));get
返回的是周幾,而不是一週的第幾天flash
能夠這樣設置,星期第一天是星期幾:it
calendar.setFirstDayOfWeek(Calendar.MONDAY);io
也能夠設置Calendar.SUNDAY
設置好了就決定了當前日期的WEEK_OF_YEAR,但並不會改變DAY_OF_WEEK !
3. 獲取日期時 Calendar.DAY_OF_MONTH 不須要特殊的操做,他直接返回一個月中的第幾天