我怎樣才能在Java中增加一天的日期?


Answers

與C#相比,Java確實似乎落後於八球。 此實用程序方法顯示了使用Calendar.add方法 (大概是唯一簡單的方法)在Java SE 6中執行的方法

public class DateUtil
{
    public static Date addDays(Date date, int days)
    {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        cal.add(Calendar.DATE, days); //minus number would decrement the days
        return cal.getTime();
    }
}

要添加一天,請按照以下問題調用它:

String sourceDate = "2012-02-29";
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date myDate = format.parse(sourceDate);
myDate = DateUtil.addDays(myDate, 1);
Question

我正在使用這種格式的日期: yyyy-mm-dd

我怎樣才能將這個日期增加一天?




你可以使用簡單的java.util庫

Calendar cal = Calendar.getInstance(); 
cal.setTime(yourDate); 
cal.add(Calendar.DATE, 1);
yourDate = cal.getTime();



使用DateFormat API將字符串轉換為Date對象,然後使用Calendar API添加一天。 讓我知道你是否想要特定的代碼示例,並且我可以更新我的答案。




java.time

在Java 8及更高版本中, java.time包使得它非常自動化。 ( Tutorial

假設String輸入和輸出:

import java.time.LocalDate;

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



Date newDate = new Date();
newDate.setDate(newDate.getDate()+1);
System.out.println(newDate);



試試這個代碼:

Date d1 = new Date();

Date d2 = new Date();

d2.setTime(d1.getTime() + 1 * 24 * 60 * 60 * 1000);



如果您使用Java 8,則java.time.LocalDatejava.time.format.DateTimeFormatter可以使此工作非常簡單。

public String nextDate(String date){
      LocalDate parsedDate = LocalDate.parse(date);
      LocalDate addedDate = parsedDate.plusDays(1);
      DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-mm-dd");
      return addedDate.format(formatter); 
}



請注意,這條線增加了24小時:

d1.getTime() + 1 * 24 * 60 * 60 * 1000

但是這一行增加了一天

cal.add( Calendar.DATE, 1 );

在日光節約時間更改(25或23小時)的日子裡,您將獲得不同的結果!







如果您想添加一個單位時間並且您希望其他字段也增加,則可以安全地使用add方法。 看下面的例子:

SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd");
Calendar cal = Calendar.getInstance();
cal.set(1970,Calendar.DECEMBER,31);
System.out.println(simpleDateFormat1.format(cal.getTime()));
cal.add(Calendar.DATE, 1);
System.out.println(simpleDateFormat1.format(cal.getTime()));
cal.add(Calendar.DATE, -1);
System.out.println(simpleDateFormat1.format(cal.getTime()));

將打印:

1970-12-31
1971-01-01
1970-12-31



如果你使用的是Java 8 ,那就這樣做。

LocalDate sourceDate = LocalDate.of(2017, Month.MAY, 27);  // Source Date
LocalDate destDate = sourceDate.plusDays(1); // Adding a day to source date.

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); // Setting date format

String destDate = destDate.format(formatter));  // End date

如果你想使用SimpleDateFormat ,那就這樣做。

String sourceDate = "2017-05-27";  // Start date

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

Calendar calendar = Calendar.getInstance();
calendar.setTime(sdf.parse(sourceDate)); // parsed date and setting to calendar

calendar.add(Calendar.DATE, 1);  // number of days to add
String destDate = sdf.format(calendar.getTime());  // End date



構建一個Calendar對象並使用方法add(Calendar.DATE,1);




Related



Tags

java java   date