Как сделать таймер обратного отсчета с определенной даты? - PullRequest
0 голосов
/ 23 апреля 2019

В моем приложении пользователь выбирает дату и время из средства выбора даты и времени (из прошлых дат), затем я хочу запустить таймер обратного отсчета с этой даты, и мне нужно запустить его в службе, чтобы, если мое приложение убит, таймер не остановится Я пробовал Chronometer и некоторые аналогичные решения на stackOverFlow, но не получил правильного решения.

Пожалуйста, проверьте на картинке ниже, что это так похоже на то, что мне нужно:

https://ibb.co/rFz24kg

1 Ответ

1 голос
/ 23 апреля 2019

Для получения разницы в датах (здесь date2 может быть выбранной пользователем датой, а date1 может быть текущей датой-временем (которую можно получить, позвонив по номеру: new Date())):

public static String getDifferenceBetweenDates(Date date1, Date date2) {
    long secondsInMilli = 1000;
    long minutesInMilli = secondsInMilli * 60;
    long hoursInMilli = minutesInMilli * 60;
    long daysInMilli = hoursInMilli * 24;

    long difference = date2.getTime() - date1.getTime();

    long elapsedDays = difference / daysInMilli;
    difference = difference % daysInMilli;

    long elapsedHours = difference / hoursInMilli;
    difference = difference % hoursInMilli;

    long elapsedMinutes = difference / minutesInMilli;
    difference = difference % minutesInMilli;

    long elapsedSeconds = difference / secondsInMilli;

    return String.format("%s days %s hours %s minutes %s seconds", elapsedDays, elapsedHours, elapsedMinutes, elapsedSeconds);
}

Теперь, когда вы получите разницу, вы можете использовать this в качестве таймера обратного отсчета и определить onTick () , чтобы обновлять ваше представление через каждый mCountUpInterval интервал времени (определенный вкласс CountUpTimer)

...