Incrementing a java.util.Date by one day

前端 未结 8 1030

What is the correct way to increment a java.util.Date by one day.

I\'m thinking something like

        Calendar cal = Calendar.getInstance();
        ca         


        
8条回答
  •  孤城傲影
    2021-02-07 01:40

    I am contributing the modern answer.

    It doesn't 'feel' right.

    My suggestion is that why it doesn’t feel right is because it’s so verbose. Adding one day to a date is conceptually a simple thing to do and ought to have a simple representation in your program. The problem here is the poor design of the Calendar class: when you use it, your code needs to be this verbose. And you are correct: you should not use the poorly designed Calendar class. It’s long outdated. Using java.time, the modern Java date and time API, adding one day is simple, also in code:

        LocalDate toDate = LocalDate.of(2020, Month.FEBRUARY, 28);
        LocalDate nextDate = toDate.plusDays(1);
        System.out.println("Incremented date is " + nextDate);
    

    Output is:

    Incremented date is 2020-02-29

    In case your need is for a different type than LocalDate, other java.time classes also have a plusDays method that you can use in the same way, as already shown in the answer by Ivin.

    Links

    • Oracle tutorial: Date Time explaining how to use java.time.
    • Answer by Ivin

提交回复
热议问题