我应该如何将Instant
转换为具有小数以下亚秒精度的unix时间戳字符串?即时到Unix时间戳
测试用例是:
@Test
public void toStringUnixTime() throws Exception {
assertEquals("0", TimeUtils.toStringUnixTime(Instant.EPOCH));
assertEquals("1491327940.619", TimeUtils.toStringUnixTime(Instant.ofEpochMilli(1491327940619L)));
assertEquals("1491327940.000", TimeUtils.toStringUnixTime(Instant.ofEpochSecond(1491327940, 12345)));
}
建议这完全不是那么回事(一直尾随0,始终点)
public static String toStringUnixTime(Instant i){
return i.getEpochSecond() + "." + String.format("%09d", i.getNano());
}
我是否正确地认为,在任何其他'TemporalAccessor'(例如LocalDate)上调用此函数将会失败,但仅在运行时(编译就好)?静态方法不是给你更多的类型安全吗? – Philipp
它可以处理任何'Instant.from()'可以转换的类型,例如'ZonedDateTime'和'OffsetDateTime'。但是,是的,它在其他情况下会失败,比如'LocalDate'。取决于你认为重要的事情。 – JodaStephen
值类型发生了什么?看着java 10 ...仍然没有... – YoYo