从 LocalTime Java 获取所有毫秒数

Get all milliseconds from LocalTime Java

我需要知道如何将 LocalTime 精确到毫秒

    LocalTime  lunchTime = LocalTime.parse("01:00:00",
            DateTimeFormatter.ISO_TIME);

如果我要执行 lunchTime.getMinute() 我只会得到 0 而 lunchTime.getHour() 我只会得到 1 小时。如何获取毫秒级的值?

尝试获取纳秒或秒并转换为毫秒(取决于您处理的精度)。

lunchTime.toNanoOfDay() / 1e+6
lunchTime.toSecondOfDay() * 1e+3

可以使用System.currentTimeMillis(),参考https://currentmillis.com/

此外,请参考 后续 解析日期 的格式选择。

此外,如果您尝试从不同时区的应用程序 运行 获取您所在时区的当地时间,请关注评论

如果你想要一天中的毫秒数(换句话说,自 00:00 以来的毫秒数),有一个 ChronoField 枚举常量恰好用于此:

    LocalTime lunchTime = LocalTime.parse("01:00:00");
    int millisecondOfDay = lunchTime.get(ChronoField.MILLI_OF_DAY);
    System.out.println("Lunch is at " + millisecondOfDay + " milliseconds of the day");

输出:

Lunch is at 3600000 milliseconds of the day

(对于某些人来说,凌晨 1 点可能是一个有趣的午餐时间,但为了演示和使用您自己的示例。)

java.time 的日期和时间 类 通常有一个 get 方法接受 TemporalField 参数。 LocalTime也不例外。调用 get() 时最常见的事情是传递一个 ChronoField 常量。该方法非常通用,可用于从未提供 getXxx 方法的日期时间对象中获取值。

文档 link: ChronoField.MILLI_OF_DAY