Java如何捲動幾個小時和幾個月?

2019-10-16 22:30:47

在Java中,如何捲動幾個小時和幾個月?

本範例展示了如何使用calender類的roll()方法捲動月(不改變年)或小時(不更改月或年)。

package com.yiibai;

import java.text.SimpleDateFormat;
import java.util.*;

public class RollHoursMonths {
    public static void main(String[] args) throws Exception {
        Date curDate = new Date();
        Calendar cl = Calendar.getInstance();

        cl.setTime(curDate);
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        String DateToStr = format.format(cl.getTime());
        System.out.println("當前時間:" + DateToStr);

        // 12個月後的時間
        cl.setTime(curDate);
        cl.roll(Calendar.MONTH, 2);
        SimpleDateFormat format2 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        String DateToStr2 = format2.format(cl.getTime());
        System.out.println("當前時間加上12個月後的時間:" + DateToStr2);

        // 10個小時後的時間
        cl.setTime(curDate);
        cl.roll(Calendar.HOUR, 1);
        SimpleDateFormat format3 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        String DateToStr3 = format3.format(cl.getTime());
        System.out.println("當前時間加上10小時後的時間:" + DateToStr3);
    }
}

上述程式碼範例將產生以下結果,結果將根據當前系統時間而有變化。

當前時間:2017-09-17 10:03:01
當前時間加上12個月後的時間:2017-11-17 10:03:01
當前時間加上10小時後的時間:2017-09-17 11:03:01

注意:上述時間超過時間最大值不會進位,比如:小時最大表示為12,大於12使用從0開始表示。

範例-2

以下是捲動月份的另一個例子。

package com.yiibai;
import java.text.SimpleDateFormat;
import java.util.Calendar;
public class RollHoursMonths2 {
    public static void main(String[] args) {
        Calendar cal = Calendar.getInstance();
        System.out.println("Time:" + cal.getTime());

        cal.roll(Calendar.YEAR, false);
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        String DateToStr = format.format(cal.getTime());
        System.out.println("向上滾下1年:" + DateToStr);


        cal.roll(Calendar.HOUR, true);
        SimpleDateFormat format2 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        String DateToStr2 = format2.format(cal.getTime());
        System.out.println("向上捲動1小時: " + DateToStr2);
    }
}

上述程式碼範例將產生以下結果 -

Time:Sun Sep 17 22:10:07 BOT 2017
向上滾下1年:2016-09-17 10:10:07
向上捲動1小時: 2016-09-17 11:10:07