我试图使用开始时间和结束时间,并计算当前时间的百分比(介于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/

10-12 01:24
查看更多