为了账号安全,请及时绑定邮箱和手机立即绑定

带有小数秒的 Java 时间戳

带有小数秒的 Java 时间戳

一只甜甜圈 2022-12-15 16:12:49
如何将 Java 打印Instant为带有小数秒的时间戳,例如 1558766955.037 ?如示例所示,所需的精度为 1/1000。我试过(double) timestamp.getEpochSecond() + (double) timestamp.getNano() / 1000_000_000了,但是当我将它转换为字符串并打印时,它显示了1.558766955037E9。
查看完整描述

3 回答

?
达令说

TA贡献1821条经验 获得超6个赞

您看到的结果是您想要获得的结果的科学 (e-) 符号。换句话说,你有正确的结果,你只需要在打印时正确格式化它:


Instant timestamp = Instant.now();

double d = (double) timestamp.getEpochSecond() + (double) timestamp.getNano() / 1000_000_000;

System.out.printf("%.2f", d);


查看完整回答
反对 回复 2022-12-15
?
慕森卡

TA贡献1806条经验 获得超8个赞

正如其他人指出的那样,这是格式问题。对于您的特定格式,您可以使用Formatter支持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);

印刷 :


1558768149.514


查看完整回答
反对 回复 2022-12-15
?
慕田峪9158850

TA贡献1794条经验 获得超7个赞

System.out.printf("%.3f", instant.toEpochMilli() / 1000.0)应该管用。



查看完整回答
反对 回复 2022-12-15
  • 3 回答
  • 0 关注
  • 256 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信