如何在android中比较已知小时广告当前小时?

时间:2012-03-20 21:43:44

标签: android time

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

2 个答案:

答案 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日。所以当前的时间大约是那个时候的一个月。