如何使用Java日历从日期中减去X天?

2022-08-31 06:23:42

有谁知道使用Java日历从日期中减去X天的简单方法吗?

我无法找到任何允许我从Java中的日期直接减去X天的函数。有人能给我指出正确的方向吗?


答案 1

摘自此处的文档

根据日历的规则,向给定日历字段添加或减去指定的时间量。例如,要从日历的当前时间中减去 5 天,可以通过调用以下命令来实现:

Calendar calendar = Calendar.getInstance(); // this would default to now
calendar.add(Calendar.DAY_OF_MONTH, -5).

答案 2

您可以使用该方法并为其传递一个负数。但是,您也可以编写一个不使用类的更简单的方法,如下所示addCalendar

public static void addDays(Date d, int days)
{
    d.setTime( d.getTime() + (long)days*1000*60*60*24 );
}

这将获取日期的时间戳值(自纪元以来的毫秒数),并添加适当的毫秒数。您可以为 days 参数传递一个负整数来执行减法。这将比“适当的”日历解决方案更简单:

public static void addDays(Date d, int days)
{
    Calendar c = Calendar.getInstance();
    c.setTime(d);
    c.add(Calendar.DATE, days);
    d.setTime( c.getTime().getTime() );
}

请注意,这两种解决方案都会更改作为参数传递的对象,而不是返回全新的 .如果需要,可以很容易地更改任何一个函数以另一种方式执行此操作。DateDate


推荐