如何将Date转换为LocalTime? [英] How to convert Date to LocalTime?

查看:2202
本文介绍了如何将Date转换为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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆