Разница в Android между двумя датами в секундах

StackOverflow https://stackoverflow.com/questions/3960661

  •  09-10-2019
  •  | 
  •  

Вопрос

Я пробовал разные методы по всей сети, но не мог заставить его работать.

Cursor cursor = sqlite.myDataBase.rawQuery("SELECT StartDate, EndDate FROM Tracks Where Id="+'"'+trackId+'"',null);

SimpleDateFormat outputFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date startDate = outputFormat.parse(cursor.getString(cursor.getColumnIndex("StartDate")));
Date endDate = outputFormat.parse(cursor.getString(cursor.getColumnIndex("EndDate")));

Таким образом, я получаю оба дата в хорошем формате. Теперь я хочу найти разницу между EndDate а также Startdate в считанные секунды.

Любой совет? Спасибо.

Это было полезно?

Решение

Вы можете превратить объект даты в длинные (миллисекунды с 1 января 1970 года), а затем использовать TimeUnit Чтобы получить количество секунд:

long diffInMs = endDate.getTime() - startDate.getTime();

long diffInSec = TimeUnit.MILLISECONDS.toSeconds(diffInMs);

РЕДАКТИРОВАНИЕ: - Корректируемое имя переменной дифференциала, которое было написано diffinm (i) s во второй строке.

Другие советы

Попробуйте ниже метод: -

    public String twoDatesBetweenTime(String oldtime)
    {
        // TODO Auto-generated method stub
        int day = 0;
        int hh = 0;
        int mm = 0;
        try
        {
            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            Date oldDate = dateFormat.parse(oldtime);
            Date cDate = new Date();
            Long timeDiff = cDate.getTime() - oldDate.getTime();
            day = (int) TimeUnit.MILLISECONDS.toDays(timeDiff);
            hh = (int) (TimeUnit.MILLISECONDS.toHours(timeDiff) - TimeUnit.DAYS.toHours(day));
            mm = (int) (TimeUnit.MILLISECONDS.toMinutes(timeDiff) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(timeDiff)));
        }
        catch (ParseException e)
        {
            e.printStackTrace();
        }
        if(day==0)
        {
            return hh + " hour " + mm + " min";
        }
        else if(hh==0)
        {
            return mm + " min";
        }
        else
        {
            return day + " days " + hh + " hour " + mm + " min";
        }
    }

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

Time t1 = new Time();
t1.setToNow();
Thread.sleep(1000);

Time t2 = new Time();
t2.setToNow();

diff = TimeUnit.MILLISECONDS.toSeconds(t2.toMillis(true)-t1.toMillis(true));
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top