Android Dev:时间跨度超过午夜计算

时间:2012-02-29 22:39:53

标签: android timer

我正在研究Android的auto profile changer应用程序...这是我在android上开发的第二个应用程序,所以不知道android开发的所有花俏......

任何方式......我在计算下次计时器代码执行时会遇到一些麻烦...主要是问题是在午夜到第二天的时间......

例如,假设用户创建了一个睡眠配置文件,该配置文件从晚上10:30开始,一直持续到第二天早上8点......以此为例,执行进入我放入的正确状态代码,但nextUpdateInterval没有正确设置...我仍然试图弄清楚如何计算/计算跨越到第二天的时间,此时我开始认为我可能会使这个任务过于复杂?有什么建议吗?

这是代码的片段:

    timer.scheduleAtFixedRate( new TimerTask() {
public void run() {
    //..... some code to convert user stored times into proper time formats
    //PM to PM
    if(isFromTimePM == true && isToTimePM == true){

    }//PM to AM
    else if(isFromTimePM == true && isToTimePM == false){
        if(rightNowDate.getTime() >= fromDate.getTime() && rightNowDate.getTime() >= toDate.getTime()){
            foundProfileIndex = i;
                i = profileArrayListSize;


            nextUpdateInterval = rightNowDate.getTime() - toDate.getTime();
        }                   
    }//AM to AM
    else if(isFromTimePM == false && isToTimePM == false){

    }//AM to PM
    else if(isFromTimePM == false && isToTimePM == true){

    }}, 0, nextUpdateInterval);

谢谢, P

2 个答案:

答案 0 :(得分:0)

忘记PM和AM。由于您似乎正在使用日期,因此当您使用getTime()方法时,您将获得自Epoch以来经过的毫秒数。简单地减去这两个,您将得到以毫秒为单位的时间间隔:

long nextUpdateInterval = secondDate.getTime() - firstDate.getTime();

nextUpdateInterval是一个long,是连续任务执行之间的时间(以毫秒为单位)。

答案 1 :(得分:0)

这个secondDate - firstDate都不是必需的,我最终做的是以下内容:

  1. 将所有时间转换为毫秒
  2. 将毫秒转换为日期对象
  3. 使用compareTo比较'from''从'日期到当前日期/时间
  4. 如果我找到个人资料匹配,那么我将'到'日期存储为下一个运行日期
  5. 创建了一个reScheduleTimer方法,该方法将日期作为参数...我只是使用.schdule(timertask,date)来重新计算计时器......