calendar的使用注意點

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

相關文章
相關標籤/搜索