我试图使用开始时间和结束时间,并计算当前时间的百分比(介于startHour和endHour之间)。
例如,如果时间现在是12:00,并且startHour = 11:00和End Hour = 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之间
谢谢
艾尔
最佳答案
我已经尝试了自我,并在获取“当前时间”日历实例的毫秒时间时发现了错误。
您因为在CurrentTime中以毫秒为单位的时间不准确,以某种方式出现错误并代表比当前时间少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);
}
关于android - 如何比较Android中当前小时的已知小时数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9795464/