Wednesday 2 October 2019

Java8 java.util.Date conversion to java.time.ZonedDateTime



I am getting the following exception while trying to convert java.util.Date to java.time.LocalDate.



java.time.DateTimeException: Unable to obtain ZonedDateTime from TemporalAccessor: 2014-08-19T05:28:16.768Z of type java.time.Instant



The code is as follow:



public static Date getNearestQuarterStartDate(Date calculateFromDate){

int[] quaterStartMonths={1,4,7,10};
Date startDate=null;

ZonedDateTime d=ZonedDateTime.from(calculateFromDate.toInstant());

int frmDateMonth=d.getMonth().getValue();


Is there something wrong in the way I am using the ZonedDateTime class?



As per documentation, this should convert a java.util.Date object to ZonedDateTime. The date format above is standard Date?



Do I have to fallback on Joda time?



If someone could provide some suggestion, it would be great.



Answer



To transform an Instant to a ZonedDateTime, ZonedDateTime offers the method ZonedDateTime.ofInstant(Instant, ZoneId). So



So, assuming you want a ZonedDateTime in the default timezone, your code should be



ZonedDateTime d = ZonedDateTime.ofInstant(calculateFromDate.toInstant(),
ZoneId.systemDefault());

No comments:

Post a Comment

php - file_get_contents shows unexpected output while reading a file

I want to output an inline jpg image as a base64 encoded string, however when I do this : $contents = file_get_contents($filename); print &q...