Java中對日期的處理須要用到Calendar類,其中有幾個方法在使用時須要新手注意。web
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種狀況是須要區分的。
看下錶的返回值orm
星期日爲一週的第一天 | 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
3. 獲取日期時 Calendar.DAY_OF_MONTH 不須要特殊的操做,他直接返回一個月中的第幾天get
例子:it
/**
* 獲取當前日期是星期幾<br>
*
* @param dt
* @return 當前日期是星期幾
*/
public static String getWeekOfDate(Date dt) {
String[] weekDays = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
Calendar cal = Calendar.getInstance();
cal.setTime(dt);
int w = cal.get(Calendar.DAY_OF_WEEK) - 1;
if (w < 0)
w = 0;
return weekDays[w];
}table