来自Date的LocalTime [英] LocalTime from Date
问题描述
我正在尝试将 Date
实例转换为 LocalTime
实例。
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();
我没有收到编译器错误,但 LocalTime
实例值错误。
I don't get a compiler error but the LocalTime
instance values are wrong.
我认为它不起作用,因为日期
将时间存储在 fasttime
而不是 cdate
。
I think it does not work because Date
stores time in fasttime
instead of cdate
.
我正在使用JDK 1.8版。
I'm using JDK version 1.8.
推荐答案
您的输入实际上是 LocalDateTime
。简单地将其解析为 LocalDateTime
然后从中获取 LocalTime
会简单得多。没有时区可以担心,没有一些遗留类别(尽可能避免日期
和日历
)
Your input is effectively a LocalDateTime
. It would be much simpler to simply parse that to a LocalDateTime
and then get the LocalTime
from that. No time zones to worry about, no somewhat-legacy classes (avoid Date
and Calendar
where possible...)
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);
}
}
这篇关于来自Date的LocalTime的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!