Android

Calculate Difference between two times in Android

Вычислить разницу между двумя временами в Android

У меня есть две строковые переменные, такие как startTime и EndTime . Мне нужно вычислить общее время, вычитая время окончания из startTime .

Формат startTime и EndTime выглядит следующим образом:

StartTime = "08:00 AM";
EndTime = "04:00 PM";

Общее время в формате часов и минут. Как вычислить это в Android?

Переведено автоматически
Ответ 1

Попробуйте приведенный ниже код.

// предположим, что формат времени имеет вид ("чч: мм а") формат

SimpleDateFormat simpleDateFormat = new SimpleDateFormat("hh:mm a");

date1 = simpleDateFormat.parse("08:00 AM");
date2 = simpleDateFormat.parse("04:00 PM");

long difference = date2.getTime() - date1.getTime();
days = (int) (difference / (1000*60*60*24));
hours = (int) ((difference - (1000*60*60*24*days)) / (1000*60*60));
min = (int) (difference - (1000*60*60*24*days) - (1000*60*60*hours)) / (1000*60);
hours = (hours < 0 ? -hours : hours);
Log.i("======= Hours"," :: "+hours);

Выходные часы :: 8

Ответ 2

Примечание: Исправлен приведенный ниже код, предоставленный Чирагом Равалом, потому что в коде, предоставленном Чирагом, возникали некоторые проблемы, когда мы пытались найти время с 22: 00 до 07: 00.

SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm");
Date startDate = simpleDateFormat.parse("22:00");
Date endDate = simpleDateFormat.parse("07:00");

long difference = endDate.getTime() - startDate.getTime();
if(difference<0)
{
Date dateMax = simpleDateFormat.parse("24:00");
Date dateMin = simpleDateFormat.parse("00:00");
difference=(dateMax.getTime() -startDate.getTime() )+(endDate.getTime()-dateMin.getTime());
}
int days = (int) (difference / (1000*60*60*24));
int hours = (int) ((difference - (1000*60*60*24*days)) / (1000*60*60));
int min = (int) (difference - (1000*60*60*24*days) - (1000*60*60*hours)) / (1000*60);
Log.i("log_tag","Hours: "+hours+", Mins: "+min);

Результатом будет: Часы: 9, минуты: 0

Ответ 3

Взгляните на DateFormat, вы можете использовать его для анализа ваших строк с помощью метода parse (String source), и вы можете легко манипулировать двумя объектами Dates, чтобы получить то, что вы хотите.

DateFormat df = DateFormat.getInstance();
Date date1 = df.parse(string1);
Date date2 = df.parse(string2);
long difference = date1.getTime() - date2.getTime();

days = (int) (difference / (1000*60*60*24));
hours = (int) ((difference - (1000*60*60*24*days)) / (1000*60*60));
min = (int) (difference - (1000*60*60*24*days) - (1000*60*60*hours)) / (1000*60);

String diffHours = df.format(hours);

Для разницы в дате

Date myDate = new Date(difference);

Чтобы отобразить дату :

String diff = df.format(myDate);
Ответ 4

Пожалуйста, попробуйте это....

SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm");

try {
date1 = simpleDateFormat.parse("08:00 AM");
} catch (ParseException e) {
e.printStackTrace();
}

try {
date2 = simpleDateFormat.parse("04:00 PM");
} catch (ParseException e) {
e.printStackTrace();
}

long difference = date2.getTime() - date1.getTime();
int days = (int) (difference / (1000 * 60 * 60 * 24));
int hours = (int) ((difference - (1000 * 60 * 60 * 24 * days)) / (1000 * 60 * 60));
int min = (int) (difference - (1000 * 60 * 60 * 24 * days) - (1000 * 60 * 60 * hours))
/ (1000 * 60);
hours = (hours < 0 ? -hours : hours);
Log.i("======= Hours", " :: " + hours);
2023-11-27 20:23 java android date time