带有小数秒的Java时间戳

时间:2019-05-25 06:58:25

标签: java decimal unix-timestamp java.time.instant

如何将Java Instant作为带有1558766955.037的小数秒的时间戳打印出来?如示例所示,所需的精度为1/1000。

我尝试了(double) timestamp.getEpochSecond() + (double) timestamp.getNano() / 1000_000_000,但是当我将其转换为字符串并打印时,它显示了1.558766955037E9

3 个答案:

答案 0 :(得分:1)

您看到的结果是您想要获得的结果的secientific (e-) notation。换句话说,您得到了正确的结果,只需要在打印时正确格式化它即可:

Instant timestamp = Instant.now();
double d = (double) timestamp.getEpochSecond() + (double) timestamp.getNano() / 1000_000_000;
System.out.printf("%.2f", d);

答案 1 :(得分:1)

正如其他人指出的那样,这是格式问题。对于您的特定格式,您可以将getFormatter一起使用,以支持点除分数:

Locale

打印:

Instant now = Instant.now();

double val = (double) now.getEpochSecond() + (double) now.getNano() / 1000_000_000;

String value = new Formatter(Locale.US)
                .format("%.3f", val)
                .toString();

System.out.print(value);

答案 2 :(得分:0)

System.out.printf("%.3f", instant.toEpochMilli() / 1000.0)应该可以工作。