计算安卓系统中两次之间的差异

2022-09-03 16:31:37

我有两个字符串变量,如StartTime和EndTime。我需要通过用开始时间减去结束时间来计算总时间。

“开始时间”和“结束时间”的格式如下所示:

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

以小时和分钟为单位的总时间格式。如何在安卓系统中计算?


答案 1

请尝试以下代码。

假设时间格式为(“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


答案 2

注意:更正了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