Действительный алгоритм для расчета разницы между двумя? - PullRequest
1 голос
/ 25 марта 2012

У меня есть приложение с расписанием поездов, и я пытаюсь рассчитать разницу между двумя значениями в следующем формате ЧЧ: ММ, чтобы мои пользователи могли легко увидеть, опаздывает ли поезд (примечание: я выбираю «реальный») данные из интернета, так что это актуально). Вот чем я сейчас занимаюсь:

    //schedule time of the train
    int hs=12;
    int ms=0;

    //real time of the train
    int hr=12;
    int mr=15;

    int t1=hs*60 + ms;
    int t2=hr*60 + mr;

    int d; //integer for the difference in minutes
    if(hr>=hs) d=t2-t1; //standard situation
    else d=1440+t2-t1; //for situation like sch: 23:55, real: 00:05

Это правильно? Я забыл что-нибудь? У меня было несколько попыток до этого алгоритма, все они имели незначительные ошибки, которые могли запутать моих пользователей. Насколько я вижу, у этого нет никаких сбоев, по крайней мере, я не мог найти ни одного.

P.S .: Я не буду использовать сторонние библиотеки, поэтому мне нужно написать собственный алгоритм, но я надеюсь, что он будет окончательным ...

Thx!

РЕДАКТИРОВАТЬ: примечание: значения hs / ms / hr / mr жестко закодированы в этом примере, хотя в моем приложении они корректно обновляются для каждой строки.

Ответы [ 2 ]

1 голос
/ 25 марта 2012

Вы должны использовать вспомогательные классы Java Date и Calendar и DateFormat , чтобы достичь того, чего вы хотите (они не являются сторонними, они являются библиотеками java и входит в Android SDK).

У вас есть отличный пример того, что вы хотите здесь: Есть ли функция для расчета разницы между двумя значениями и отображения относительного результата?

Для класса DateFormat у вас есть хороший пример: http://www.exampledepot.com/egs/java.text/formatdate.html

1 голос
/ 25 марта 2012

Это должно дать вам разницу в минутах в любой день или за границу любого дня, за исключением летнего времени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...