How can I increment a date by one day in Java?

前端 未结 28 1581

I\'m working with a date in this format: yyyy-mm-dd.

How can I increment this date by one day?

相关标签:
28条回答
  • 2020-11-21 06:59

    Please note that this line adds 24 hours:

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

    but this line adds one day

    cal.add( Calendar.DATE, 1 );
    

    On days with a daylight savings time change (25 or 23 hours) you will get different results!

    0 讨论(0)
  • 2020-11-21 07:00

    you can use Simple java.util lib

    Calendar cal = Calendar.getInstance(); 
    cal.setTime(yourDate); 
    cal.add(Calendar.DATE, 1);
    yourDate = cal.getTime();
    
    0 讨论(0)
  • 2020-11-21 07:02

    It's simple actually. One day contains 86400000 milliSeconds. So first you get the current time in millis from The System by usingSystem.currentTimeMillis() then add the 84000000 milliSeconds and use the Date Class to generate A date format for the milliseconds.

    Example

    String Today = new Date(System.currentTimeMillis()).toString();

    String Today will be 2019-05-9

    String Tommorow = new Date(System.currentTimeMillis() + 86400000).toString();

    String Tommorow will be 2019-05-10

    String DayAfterTommorow = new Date(System.currentTimeMillis() + (2 * 86400000)).toString();

    String DayAfterTommorow will be 2019-05-11

    0 讨论(0)
  • 2020-11-21 07:03

    If you are using Java 8, then do it like this.

    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
    

    If you want to use SimpleDateFormat, then do it like this.

    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
    
    0 讨论(0)
  • 2020-11-21 07:03

    With Java SE 8 or higher you should use the new Date/Time 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);
    

    If you need to convert from java.util.Date to java.time.LocalDate, you may use this method.

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

    With a version prior to Java SE 8 you may use Joda-Time

    Joda-Time provides a quality replacement for the Java date and time classes and is the de facto standard date and time library for Java prior to 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);
    
    0 讨论(0)
  • 2020-11-21 07:06

    Java does appear to be well behind the eight-ball compared to C#. This utility method shows the way to do in Java SE 6 using the Calendar.add method (presumably the only easy way).

    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();
        }
    }
    

    To add one day, per the question asked, call it as follows:

    String sourceDate = "2012-02-29";
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
    Date myDate = format.parse(sourceDate);
    myDate = DateUtil.addDays(myDate, 1);
    
    0 讨论(0)
提交回复
热议问题