开发者社区> 问答> 正文

Java 转换double为Date format string的结果不一致

使用的代码如下:

double itemDouble = 1370437809.00;
long itemLong = (long) (itemDouble * 1000);
Date itemDate = new Date(itemLong);
String itemDateStr = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SS").format(itemDate);

当itemDouble的值小数位是00的时候结果是正常的,比如itemDouble是1370437809.00的时候itemDateStr is 2013-06-05 21:10:09.00。 当itemDouble的值小数位是00的时候结果是正常的,比如itemDouble是 1370437809.66的时候, itemDateStr is 2013-06-05 21:10:09.660,小数位就多了一位。
screenshot
请问这是什么原因造成的?

展开
收起
蛮大人123 2016-02-28 14:07:33 3060 0
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪

    因为1s=1000ms,所以不管你设置成SS还是SSS,都是显示最终的结果,而不会截取。最终的结果是660ms,所以显示21:10:09.660而不是21:10:09.660,除非你毫秒小于100。
    列如
    double itemDouble = 1370437809.01;
    long itemLong = (long) (itemDouble * 1000);
    Date itemDate = new Date(itemLong);
    String itemDateStr = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SS").format(itemDate);
    System.out.println(itemDateStr);

    2019-07-17 18:49:33
    赞同 展开评论 打赏
问答分类:
问答地址:
相关产品:
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载