LocalTime from Date

Stanko picture Stanko · Apr 28, 2015 · Viewed 32.6k times · Source

I'm trying to convert a Date instance to a LocalTime instance.

// Create the Date
Date date = format.parse("2011-02-18 05:00:00.0");    

// Convert to Calendar
Calendar cal = Calendar.getInstance();
cal.setTime(date);

// Convert Calendar to LocalTime
Instant instant = Instant.ofEpochMilli(cal.getTimeInMillis());
LocalTime convert = LocalDateTime.ofInstant(instant, ZoneId.systemDefault()).toLocalTime();

I don't get a compiler error but the LocalTime instance values are wrong.

I think it does not work because Date stores time in fasttime instead of cdate.

I'm using JDK version 1.8.

Answer

johanwannheden picture johanwannheden · Oct 5, 2016

This is also quite simple:

LocalTime time = LocalDateTime.ofInstant(new Date().toInstant(),
    ZoneId.systemDefault()).toLocalTime();