如何将Date转换为LocalTime? [英] How to convert Date to LocalTime?
问题描述
我正在尝试将日期
转换为 LocalTime
(我只想要几分钟日期),但它没有解决。我第一次在这里查看 date-to-java-time ,并尝试转换一个日期
到 LocalTime
但是没有工作,所以我试图转换 Date
到
日历
然后将日历
转换为日期
但也没有起作用。
I'm trying to convert a Date
to a LocalTime
(I only want the hours and minutes of the date) but it's not working out. I first looked here date-to-java-time and try to convert a Date
to LocalTime
but that didn't work so I tried to convert Date
to Calendar
and then convert Calendar
to Date
but that also didn't work.
我认为这是因为 date
将时间存入 fasttime
而不是 cdate
。但这只是一种直觉。这是我的代码:
I think it is because date
stores the time in fasttime
instead of cdate
. But that's just a gut feeling. Here's my code:
//create the date
String strTime ="2011-02-18 05:00:00.0";
Date date = format.parse(strTime);
//convert to calendar
Calendar cal = Calendar.getInstance();
cal.setTime(date);
//convert the date to a local time
Instant instant = Instant.ofEpochMilli(cal.getTimeInMillis());
LocalTime convert = LocalDateTime.ofInstant(instant, ZoneId.systemDefault()).toLocalTime();
我没有收到编译错误,但是$ LocalTime
他的小时没有设置并保持 0
。
I don't get a compile error but the LocalTime
his hours aren't set and stay 0
.
推荐答案
您的输入实际上是一个 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屋!