Calendarのadd()メソッドの紹介

1758 ワード

プロジェクトでは指定された日付のログを統計するため,Calendarのaddメソッドを用いて日付パラメータに関する動的変更を行う.しかしjava docで紹介されているのを見てもよくわかりませんが、addが何ができるかを話しただけで、具体的に実現する方法は紹介されていません.ネット上のいくつかの資料を見て、大部分はaddとrollの2つの方法の違いを話していますが、実は私たちはadd方法を使うだけで大部分の機能を解決することができます.例えば、現在の年、月、日、時間、分、秒、ミリ秒の前時間または後時間を得る必要があります.addメソッドを使用してどのように実現しますか?最初は知らなかったが、技術総監にコードを聞いて自分で試験させた.コードは以下の通りだ.
public static Date addYears(Date date, int amount)
    {
        return add(date, 1, amount);
    }

    public static Date addMonths(Date date, int amount)
    {
        return add(date, 2, amount);
    }

    public static Date addWeeks(Date date, int amount)
    {
        return add(date, 3, amount);
    }

    public static Date addDays(Date date, int amount)
    {
        return add(date, 5, amount);
    }

    public static Date addHours(Date date, int amount)
    {
        return add(date, 11, amount);
    }

    public static Date addMinutes(Date date, int amount)
    {
        return add(date, 12, amount);
    }

    public static Date addSeconds(Date date, int amount)
    {
        return add(date, 13, amount);
    }

    public static Date addMilliseconds(Date date, int amount)
    {
        return add(date, 14, amount);
    }

    private static Date add(Date date, int calendarField, int amount)
    {
        if(date == null)
        {
            throw new IllegalArgumentException("The date must not be null");
        } else
        {
            Calendar c = Calendar.getInstance();
            c.setTime(date);
            c.add(calendarField, amount);
            return c.getTime();
        }
    }
私は1つのテストクラスでテストしました.1であれば年操作を表し、2では月操作、3では週操作、5では日付操作、11では時間操作、12では分操作、13では秒操作、14ではミリ秒操作です.ここまでの基本的な時間操作に対する需要はすべて実現した.しかし、夜にはこのようなコードが見つからず、再び技術総監を拝んだ.