欢迎访问宙启技术站
智能推送

如何在Java中使用函数实现对日期进行加减操作?

发布时间:2023-06-09 08:47:40

在Java中,可以使用Date或者Calendar类来处理日期相关的操作。其中,Date类是一个不可变的类,表示特定的瞬间,而Calendar类则是一个可变的类,可以进行日期的修改和计算。

对于Date类,可以使用getTime()方法获得一个long类型的表示毫秒数的数值,然后进行加减操作,最后再将结果转换成Date类型。如下是一个示例代码:

import java.util.Date;

public class DateTest {
    public static void main(String[] args) {
        Date date = new Date();
        System.out.println(date);

        long time = date.getTime();
        System.out.println(time);

        long newTime = time + 86400000; //加一天
        date.setTime(newTime);
        System.out.println(date);

        newTime = time - 86400000; //减一天
        date.setTime(newTime);
        System.out.println(date);
    }
}

运行结果如下:

Tue Mar 23 15:26:58 CST 2021
1616492818120
Wed Mar 24 15:26:58 CST 2021
Mon Mar 22 15:26:58 CST 2021

这里的86400000表示一天的毫秒数。

对于Calendar类,可以使用add()方法进行日期的加减操作。该方法可以接受一个int类型的参数,表示要增加或减少的时间单位,如Calendar.DAY_OF_YEAR表示年中的天数,Calendar.MONTH表示月份等。如下是一个示例代码:

import java.util.Calendar;
import java.util.Date;

public class CalendarTest {
    public static void main(String[] args) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(new Date());
        System.out.println(cal.getTime());

        cal.add(Calendar.DAY_OF_YEAR, 1); //加一天
        System.out.println(cal.getTime());

        cal.add(Calendar.MONTH, -1); //减一个月
        System.out.println(cal.getTime());
    }
}

运行结果如下:

Tue Mar 23 15:34:25 CST 2021
Wed Mar 24 15:34:25 CST 2021
Sun Feb 21 15:34:25 CST 2021

这里的1表示增加1天,-1表示减少1个月。

除了add()方法,Calendar类还提供了roll()方法。与add()方法不同的是,roll()方法只会修改指定的时间单位,而不会影响其他时间单位。例如,对于2020年12月31日,使用add()方法增加1天,会变成2021年1月1日;而使用roll()方法增加1天,仍然会保持在2020年12月。

import java.util.Calendar;
import java.util.Date;

public class CalendarTest {
    public static void main(String[] args) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(new Date());
        System.out.println(cal.getTime());

        cal.add(Calendar.MONTH, 1); //增加一个月
        System.out.println(cal.getTime());

        cal.roll(Calendar.MONTH, 1); //只增加一个月
        System.out.println(cal.getTime());
    }
}

运行结果如下:

Tue Mar 23 16:00:01 CST 2021
Fri Apr 23 16:00:01 CST 2021
Sun May 23 16:00:01 CST 2021

从运行结果可以看出,使用add()方法会同时修改月份和年份,而使用roll()方法只修改了月份,不会影响年份。

总的来说,Java提供的Date和Calendar类可以方便地实现对日期的加减操作,开发人员只需根据具体需求选择合适的方法即可。需要注意的是,使用Date类进行加减操作会改变原有的日期对象,而使用Calendar类进行加减操作则不会改变原有的日期对象,而是返回一个新的日期对象。另外,需要注意日期格式的转换,以保证代码的正确性。