Возникла проблема, когда я пытался преобразовать 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. Отформатированная строка даты неверна.

Как это случилось?

3
heng_gk 26 Фев 2015 в 12:52

2 ответа

Лучший ответ

Согласно вашему коду 1370437809.66 - это количество секунд с 1970 года. Десятичная часть представляет 660 миллисекунд. Когда вы конвертируете в Date, вы просите отобразить миллисекунды (.SSS в шаблоне). Полученный результат правильный.

5
osechet 26 Фев 2015 в 10:04

У вас 0,66 * 1000 = 660, это правильно

0
Zoltán 26 Фев 2015 в 09:59