我正在研究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
答案 0 :(得分:0)
忘记PM和AM。由于您似乎正在使用日期,因此当您使用getTime()方法时,您将获得自Epoch以来经过的毫秒数。简单地减去这两个,您将得到以毫秒为单位的时间间隔:
long nextUpdateInterval = secondDate.getTime() - firstDate.getTime();
nextUpdateInterval是一个long,是连续任务执行之间的时间(以毫秒为单位)。
答案 1 :(得分:0)
这个secondDate - firstDate都不是必需的,我最终做的是以下内容: