Возникла проблема, когда я пытался преобразовать double в Date. Это мой код:
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
равно 1370437809.00
, itemDateStr
равно 2013-06-05 21:10:09.00,
но когда десятичные разряды itemDouble не равны нулю, например 1370437809.66
, itemDateStr
равно 2013-06-05 21:10:09.660
. Отформатированная строка даты неверна.
Как это случилось?
2 ответа
Согласно вашему коду 1370437809.66
- это количество секунд с 1970 года. Десятичная часть представляет 660 миллисекунд. Когда вы конвертируете в Date
, вы просите отобразить миллисекунды (.SSS
в шаблоне). Полученный результат правильный.
У вас 0,66 * 1000 = 660, это правильно
Похожие вопросы
Новые вопросы
java
Java — это высокоуровневый объектно-ориентированный язык программирования. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег часто используется вместе с другими тегами для библиотек и/или фреймворков, используемых разработчиками Java.