我正在尝试将一个Date实例转换为一个LocalTime实例。
Date
LocalTime
// 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();
我没有得到编译器错误,但是LocalTime实例值是错误的。
我认为这不起作用,因为它Date存储时间fasttime而不是cdate。
fasttime
cdate
我正在使用JDK 1.8版。
您的输入实际上是一个LocalDateTime。简单地将其解析为a LocalDateTime然后从中获取会更简单LocalTime。无需担心时区,无需保留某些传统课程(避免Date并Calendar在可能的情况下…)
LocalDateTime
Calendar
import java.time.*; import java.time.format.*; import java.util.*; public class Test { public static void main(String[] args) { DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.S", Locale.US); String text = "2011-02-18 05:00:00.0"; LocalDateTime localDateTime = LocalDateTime.parse(text, formatter); LocalTime localTime = localDateTime.toLocalTime(); System.out.println(localTime); } }