Как сравнить известные часы и текущий час в Android? - PullRequest
2 голосов
/ 21 марта 2012

Я пытаюсь использовать начальный час и конечный час и рассчитать проценты текущего времени (которое находится между startHour и endHour).Например, если время сейчас 12:00, а startHour = 11:00 и End Hour = 14:00, оно должно вернуть 33 (округлено), потому что прошло 33% времени.

у меня естьпопробовал следующее, но, возможно, я смешиваю разные форматы ... я не знаю:

double currentTime = Calendar.getInstance().getTimeInMillis();
double startTime = Time.UTC(2012, 3, 20, 22, 0, 0);
double endTime = Time.UTC(2012, 3, 20, 23, 30, 0);
int prg = (int)((currentTime - startTime)/(endTime - startTime));

в этом коде я предполагаю, что текущий час находится между 22:00 и 23: 30

Спасибо, Эяль

Ответы [ 2 ]

0 голосов
/ 04 апреля 2012

Я не программирую Android, но я почти уверен, что проблема в том, что месяцы начинаются с нуля (январь = 0), то есть 3 - это не март, а апрель.

То есть Time.UTC(2012, 3, 20, 22, 0, 0) означает не 22:00 20 марта, а 20 апреля.Таким образом, текущее время было примерно за месяц до этого времени.

0 голосов
/ 22 марта 2012

Я попытался самостоятельно и обнаружил ошибку при получении времени в миллисекундах для экземпляра календаря текущего времени экземпляр.

Вы получили ошибку, потому что время в миллисекундах для CurrentTime не былоточный , он как-то глючил и представлял время на 1 месяц меньше текущего , поэтому вы получили отрицательный ответ.

Вы можете выполнить это нижеуказанным способом.

   Calendar calCurr = Calendar.getInstance();
    Log.i("Time in mili of Current - Normal", ""+calCurr.getTimeInMillis()); // see what it gives? dont know why?
    Date date = new Date();
    calCurr.set(date.getYear()+1900, date.getMonth()+1, date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds());// so added one month to it
    Log.i("Time in mili of Current - after update", ""+calCurr.getTimeInMillis()); // now get correct

    Calendar start = Calendar.getInstance();
    start.set(2012, 12, 1, 11, 28, 0);

    Calendar end = Calendar.getInstance();
    end.set(2012, 12, 1, 13, 28, 0);

    if((start.compareTo(calCurr)==-1) && (calCurr.compareTo(end)==-1) && (start.compareTo(end)==-1))
    {

    double hrBetweenStartEnd = (end.getTimeInMillis()-start.getTimeInMillis())/3600000;
    double hrBetweenStartCurr = (calCurr.getTimeInMillis()-start.getTimeInMillis())/3600000;

    int percentage = (int) ((100*hrBetweenStartCurr)/hrBetweenStartEnd);
    Log.i("Percentage", ""+percentage);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...