2015-12-13 3 views
0

Я знаю, что существует множество форматов примера для вычисления разницы двух дат. Я попытался в какой-то мере оттуда. Мой ответ всегда правильный, если я вводил даты в течение одного месяца. Если я буду искать разницу более месяца, это не дает правильного ответа. Он всегда находил разницу в течение двух дат. Как я могу найти разницу дат больше, чем 31 день или 2016-01-05 до 2015-12-13.Ошибка вычисления отклонения даты календаря в Android

Date oldDate,newDate; 
SimpleDateFormat dateFormat; 

//editText1=2015-12-13 
//editText2=2016-01-05 

oldDate = dateFormat.parse(editText1.getText().toString()); 
newDate = dateFormat.parse(editText2.getText().toString()); 
oldDate=dateFormat.parse(dateFormat.format(oldDate)); 
newDate=dateFormat.parse(dateFormat.format(newDate)); 
long diff = newDate1.getDate() - oldDate1.getDate(); 
editText3.setText(""+(diff+1)); 
+0

Это очевидно, так как 'GetDate()' возвращает значение, которое находится в диапазоне от 1 до 31, представляющего день месяца, который содержит или начинается с моментом времени, представленным этим Date объектом, как интерпретировать в локальном часовой пояс. –

ответ

1

Преобразование даты в метки времени в миллисекундах, вычесть одно из другого, и разделить результат на 86400000 (миллисекунды в день).

long oldTime, newTime; 
oldTime = dateFormat.parse(editText1.getText().toString()).getTime(); 
newTime = dateFormat.parse(editText2.getText().toString()).getTime(); 
long daysDiff = Math.abs(newTime - oldTime)/DateUtils.DAY_IN_MILLIS; 
+0

Обычно это происходит в течение одного дня в часовых поясах с дневным светом, когда одна дата находится в зимнее время и другая дата в летнее время. –

+0

Большое спасибо @karakuri –

Смежные вопросы