计算安卓系统中两次之间的差异
我有两个字符串变量,如StartTime和EndTime。我需要通过用开始时间减去结束时间来计算总时间。
“开始时间”和“结束时间”的格式如下所示:
StartTime = "08:00 AM";
EndTime = "04:00 PM";
以小时和分钟为单位的总时间格式。如何在安卓系统中计算?
我有两个字符串变量,如StartTime和EndTime。我需要通过用开始时间减去结束时间来计算总时间。
“开始时间”和“结束时间”的格式如下所示:
StartTime = "08:00 AM";
EndTime = "04:00 PM";
以小时和分钟为单位的总时间格式。如何在安卓系统中计算?
请尝试以下代码。
假设时间格式为(“hh:mm a”)格式
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
注意:更正了Chirag Raval提供的代码如下,因为在Chirag提供的代码中,当我们尝试从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