本地时间从日期开始

2022-09-03 04:20:03

我正在尝试将实例转换为实例。DateLocalTime

// 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

我认为它不起作用,因为存储时间而不是.Datefasttimecdate

我使用的是 JDK 版本 1.8。


答案 1

这也很简单:

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

答案 2

您的输入实际上是一个 .简单地将其解析为 a 然后从中获取会简单得多。无需担心时区,没有有点遗留的类(避免并在可能的情况下...)LocalDateTimeLocalDateTimeLocalTimeDateCalendar

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);
    }
}