Search code examples
javadatedatetimelocaldatedatetime-conversion

How convert LocalDate to ChronoZonedDateTime?


In the code bellow, i'm getting an error in my "if" comparisson. The message says "isBefore(java.time.chrono.ChronoZonedDateTime<?>) in ChronoZonedDateTime cannot be applied to (java.time.LocalDate)". How convert LocalDate to ChronoZonedDateTime?

LocalDate taxBegin = tax.getBeginAt();

if(contract.getBeginAt().isBefore(taxBegin)){
    //do something
}

I tried wrapping like ChronoZonedDateTime.from(taxBegin) but didn't work, it gave me "DateTimeException: Unable to obtain ZoneId from TemporalAccessor: 2019-12-01 of type java.time.LocalDat"


Solution

  • In order to convert a ZonedDateTime object into a LocalDate, you can use toLocalDate() method. Thus, the following code should work for you:

    LocalDate taxBegin = tax.getBeginAt();
    
    if(contract.getBeginAt().toLocalDate().isBefore(taxBegin)){
        //do something
    }
    

    Check https://howtodoinjava.com/java/date-time/localdate-zoneddatetime-conversion/ for an example of converting between ZonedDateTime and LocalDate.