unix epoch毫秒是否有DateTimeFormatter?

时间:2016-03-17 16:18:15

标签: java java-8 java-time

是否可以构建=以使以下内容相同?

c.custom =

当您的文本输入使用epoch millis时,必须使用特殊情况似乎很遗憾。

2 个答案:

答案 0 :(得分:5)

如果您知道您的日期是合理的近期(自纪元以来的秒数超过1),您可以使用此格式化程序:

new DateTimeFormatterBuilder()
        .appendValue(ChronoField.INSTANT_SECONDS, 1, 19, SignStyle.NEVER)
        .appendValue(ChronoField.MILLI_OF_SECOND, 3)
        .toFormatter();

否则,它有点棘手,你最好直接解析long值:

Instant instant = Instant.ofEpochMilli(Long.parseLong(millisString))
System.out.println(instant.toEpochMilli());

答案 1 :(得分:0)

不确定为什么要将DateTimeFormatter用于仅包含毫秒的字符串。

使用毫秒来处理Instant

Instant now = Instant.ofEpochMilli(System.currentTimeMillis());
String nowString = String.valueOf(now.toEpochMilli());

System.out.println(now.equals(Instant.ofEpochMilli(Long.valueOf(nowString)))); // true

要使用DateTimeFormatter,请拨打.toString().parse(String)使用预定义的<{1}}

Instant now = Instant.ofEpochMilli(System.currentTimeMillis());
String nowString = now.toString();

System.out.println(now.equals(Instant.parse(nowString))); // true