我應該如何將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