java.util.Date - Deleting three months from a date?

前端 未结 11 1589
北荒
北荒 2020-12-14 05:30

I have a date of type java.util.Date

I want to subtract three months from it.

Not finding a lot of joy in the API.

11条回答
  •  情话喂你
    2020-12-14 06:31

    Using Java 8 you can do it like this,

    Date d = Date.from(LocalDate.now().minusMonths(3).atStartOfDay(ZoneId.systemDefault()).toInstant());
    

    The LocalDate class has a lot of methods to help you make easy computations about dates like the above,

    // Add 2 months
    Date d = Date.from(LocalDate.now().plusMonths(2).atStartOfDay(ZoneId.systemDefault()).toInstant());
    // Add 5 days
    Date d = Date.from(LocalDate.now().plusDays(5).atStartOfDay(ZoneId.systemDefault()).toInstant());
    // Minus 1 day and 1 year
    Date d = Date.from(LocalDate.now().minusYears(1).minusDays(1).atStartOfDay(ZoneId.systemDefault()).toInstant());
    

    In order to compute time you can use the LocalDateTime class,

    // Minus 1 year, minus 1 days, plus 1 hour
    Date d = Date.from(LocalDateTime.now().minusYears(1).minusDays(1).plusHours(1).toLocalDate().atStartOfDay(ZoneId.systemDefault()).toInstant());
    

提交回复
热议问题