使用的代码如下:
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,小数位就多了一位。
请问这是什么原因造成的?
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
那我明白你的意思了。因为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);
请看文档
翻译:对于格式化来说,模式字母的数量是
最小的数位,如果数位不够,则用 0 填充以达到此数量。……但对于
多于指定数位的情况,则不会进行截取。PS:
.00是一位的0左边补位一个0,而不是000截取前两位0