Я пытаюсь вычислить разницу между 2 раз. Это работает хорошо, если только две даты не находятся с каждой стороны полуночи. В этом случае я получаю отрицательный ответ. Любые идеи, как я могу улучшить код, чтобы исправить эту проблему?Расчет разницы во времени между 2 днями android
String sleepStart = editFallAsleepTime.getText().toString();
String sleepStop = editWakeUpTime.getText().toString();
String awakeTimeString = ((Globals) getActivity().getApplication()).getAwakeTime();
//HH converts hour in 24 hours format (0-23), day calculation
SimpleDateFormat format = new SimpleDateFormat("HH:mm");
Date d1 = null;
Date d2 = null;
try
{
d1 = format.parse(sleepStart);
d2 = format.parse(sleepStop);
float t1 = d1.getTime();
float t2 = d2.getTime();
if(t2 <= t1){
t2 +=24;
}
float diff = t2 - t1;
//in milliseconds
float diff = d2.getTime() - d1.getTime();
float diffHours = diff/(60 * 60 * 1000);
float awakeTime = Float.valueOf(awakeTimeString);
float awakeHours = awakeTime/60;
float calcEffectiveSleep = diffHours - awakeHours;
String sleepTime = Float.toString(diffHours);
String effectiveSleep = Float.toString(calcEffectiveSleep);
((Globals) getActivity().getApplication()).setEffectiveSleep(effectiveSleep);
}
catch (Exception e)
{
Log.e("timediff","didntwork");
}
Посмотрите на ответы здесь: http://stackoverflow.com/questions/1555262/calculating-the-difference-between-two-java-date-instances – alzee
Вы работаете только с время. Итак, вы принимаете оба раза в один день? И ваша проблема возникает только в том случае, если end
Нет, я не предполагаю, что оба раза в тот же день. Я должен предположить, что это не так, если в первый раз до 23.59. Должен ли я поставить дату там как-то? –