Unix纪元毫秒有DateTimeFormatter吗?

Sto*_*ica 3 java java-8 java-time

是否可以构造一个java.time.DateFormatter等价的以下项?

Instant instant = Instant.ofEpochMilli(System.currentTimeMillis());
assert instant.equals(Instant.now);
String str = String.valueOf(instant.toEpochMilli());

Instant instant = Instant.from(formatter.parse(String.valueOf(System.currentTimeMillis())));
assert instant.equals(Instant.now);
String str = formatter.format(instant);
Run Code Online (Sandbox Code Playgroud)

当您的文本输入使用历元时,不得不特殊情况显得有些可惜。

ass*_*ias 5

如果您知道您的日期是最近的日期(从纪元开始到现在的秒数,则大于1),您可以使用以下格式化程序:

new DateTimeFormatterBuilder()
        .appendValue(ChronoField.INSTANT_SECONDS, 1, 19, SignStyle.NEVER)
        .appendValue(ChronoField.MILLI_OF_SECOND, 3)
        .toFormatter();
Run Code Online (Sandbox Code Playgroud)

否则,它会变得有些棘手,您最好直接解析long值:

Instant instant = Instant.ofEpochMilli(Long.parseLong(millisString))
System.out.println(instant.toEpochMilli());
Run Code Online (Sandbox Code Playgroud)

  • 好招 旁注:这可以解析到316889355年,所以我想我们还可以:)。 (2认同)