我正在尝试使用开始时间和结束时间,并计算当前时间的百分比(介于startHour和endHour之间)。 例如,如果时间现在是12:00,startHour = 11:00,结束时间= 14:00,则应返回33(舍入),因为33%的时间已经过去。
我尝试过以下内容,但也许我正在混合不同的格式......我不知道:
double currentTime = Calendar.getInstance().getTimeInMillis();
double startTime = Time.UTC(2012, 3, 20, 22, 0, 0);
double endTime = Time.UTC(2012, 3, 20, 23, 30, 0);
int prg = (int)((currentTime - startTime)/(endTime - startTime));
在此代码中,我假设当前小时在22:00到23:30之间
由于 的Eyal
答案 0 :(得分:0)
我已经尝试了自己,并在为当前时间日历实例获取时间(以毫秒为单位)时发现错误。
你收到错误是因为当前时间的毫秒时间不准确,它有点儿错误,而表示比当前时间少1个月的时间所以这就是你的原因所在得到了回答。
您可以在下方执行此操作。
Calendar calCurr = Calendar.getInstance();
Log.i("Time in mili of Current - Normal", ""+calCurr.getTimeInMillis()); // see what it gives? dont know why?
Date date = new Date();
calCurr.set(date.getYear()+1900, date.getMonth()+1, date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds());// so added one month to it
Log.i("Time in mili of Current - after update", ""+calCurr.getTimeInMillis()); // now get correct
Calendar start = Calendar.getInstance();
start.set(2012, 12, 1, 11, 28, 0);
Calendar end = Calendar.getInstance();
end.set(2012, 12, 1, 13, 28, 0);
if((start.compareTo(calCurr)==-1) && (calCurr.compareTo(end)==-1) && (start.compareTo(end)==-1))
{
double hrBetweenStartEnd = (end.getTimeInMillis()-start.getTimeInMillis())/3600000;
double hrBetweenStartCurr = (calCurr.getTimeInMillis()-start.getTimeInMillis())/3600000;
int percentage = (int) ((100*hrBetweenStartCurr)/hrBetweenStartEnd);
Log.i("Percentage", ""+percentage);
}
答案 1 :(得分:0)
我不编程android,但我很确定问题是几个月是从零开始的(1月= 0),也就是说,3不是3月而是4月。
即Time.UTC(2012, 3, 20, 22, 0, 0)
不代表3月20日22:00,而是4月20日。所以当前的时间大约是那个时候的一个月。