我使用的日期格式为:yyyy-mm-dd。

如何将此日期增加一天?


当前回答

让我们来澄清一下这个用例:您希望执行日历算术,并以java.util.Date开始/结束。

一些方法:

使用SimpleDateFormat转换为字符串并返回:这是一种效率低下的解决方案。 转换为LocalDate:您将丢失任何时间信息。 转换为LocalDateTime:这涉及更多步骤,您需要考虑时区。 使用Date.getTime()转换为epoch:这很有效,但你是用毫秒计算的。

考虑使用java.time.Instant:

Date _now = new Date();
Instant _instant = _now.toInstant().minus(5, ChronoUnit.DAYS);
Date _newDate = Date.from(_instant);

其他回答

构造一个Calendar对象并调用add(Calendar。目前为止,1);

这很简单,试着用简单的话来解释。 今天的日期如下所示

Calendar calendar = Calendar.getInstance();
System.out.println(calendar.getTime());// print today's date
calendar.add(Calendar.DATE, 1);

现在把这个日期提前一天。添加参数为(常量,值)的方法。这里的constant可以是DATE, hours, min, sec等,value是常量的值。比如一天,前面的常数是日历。DATE和它的值是1,因为我们想要提前一天的值。

System.out.println(calendar.getTime());//打印明天的修改日期

谢谢

Date today = new Date();               
SimpleDateFormat formattedDate = new SimpleDateFormat("yyyyMMdd");            
Calendar c = Calendar.getInstance();        
c.add(Calendar.DATE, 1);  // number of days to add      
String tomorrow = (String)(formattedDate.format(c.getTime()));
System.out.println("Tomorrows date is " + tomorrow);

这将给出明天的日期。C.add(…)参数可以从1更改为另一个数字,以获得适当的增量。

java.time

在Java 8及以后的版本中,Java。时间包让这个过程变得很自动。(教程)

假设字符串输入和输出:

import java.time.LocalDate;

public class DateIncrementer {
  static public String addOneDay(String date) {
    return LocalDate.parse(date).plusDays(1).toString();
  }
}

对于Java SE 8或更高版本,您应该使用新的日期/时间API

 int days = 7;       
 LocalDate dateRedeemed = LocalDate.now();
 DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/YYYY");

 String newDate = dateRedeemed.plusDays(days).format(formatter);   
 System.out.println(newDate);

如果您需要从java.util.Date转换为java.time。LocalDate,您可以使用此方法。

  public LocalDate asLocalDate(Date date) {
      Instant instant = date.toInstant();
      ZonedDateTime zdt = instant.atZone(ZoneId.systemDefault());
      return zdt.toLocalDate();
  }

对于Java SE 8之前的版本,您可以使用Joda-Time

Joda-Time提供了Java日期和时间的高质量替代品 类,是Java事实上的标准日期和时间库 在Java SE 8之前

   int days = 7;       
   DateTime dateRedeemed = DateTime.now();
   DateTimeFormatter formatter = DateTimeFormat.forPattern("dd/MM/uuuu");
        
   String newDate = dateRedeemed.plusDays(days).toString(formatter);   
   System.out.println(newDate);