如果我在这里提出一个愚蠢的问题,我真的很抱歉,但我真的不知道要解决:(
在我的应用中,我想计算总小时数,最后显示在textView
上。如果开始时间超过结束时间,我设置了不同的条件。
int a = SplitTime(objMyCustomBaseAdapter.getFistTime());
int b = SplitTime(objMyCustomBaseAdapter.getLastTime());
long difference = 0;
if (a > b)
{
difference = b + 24 - a;
Log.e("Tag",difference+"");
int minutes = (int) ((difference / (1000 * 60)) % 60);
int hours = (int) ((difference / (1000 * 60 * 60)) % 24);
totalHours.setText((hours + ":" + minutes));
}
else
{
difference=b-a;
int minutes = (int) ((difference / (1000 * 60)) % 60);
int hours = (int) ((difference / (1000 * 60 * 60)) % 24);
totalHours.setText((hours + ":" + minutes));
}
public static int SplitTime(String time) {
try {
String[] altSplitTime = time.split(":", 3);
return Integer.valueOf(altSplitTime[1].trim()) * 60 + Integer.valueOf(altSplitTime[2].trim());
}
catch (Exception ex)
{
return 0;
}
}
假设int a
持有550
,b
持有71
,差异持有503
。
之后,我想将其转换为hours
和minutes
,最后显示在textView上。但我在textView上获得0:0
。
这里有什么问题?我做错了吗?有人可以给我一些如何解决这个问题的建议吗?赞赏。
答案 0 :(得分:0)
我认为你的演员有问题。这意味着您将分钟和小时称为int
,但它们可能会返回多头,双头或花车。
尝试将小时和分钟更改为double,long或float。然后通过舍入或转换将其转换为整数。
double minutes = ((difference / (1000 * 60)) % 60);
double hours = ((difference / (1000 * 60 * 60)) % 24);
//print the values here to your log to ensure they hold a value
Log.v("TIME", "minutes: " + minutes);
Log.v("TIME", "hours: " + hours);
//convert to int here, by rounding or casting.
totalHours.setText((hours + ":" + minutes));
答案 1 :(得分:0)
将其更改为。
int minutes = (int) (difference % 60);
int hours = (int) (difference /60 % 24);