如何从特定日期开始计时?
How to make a count up timer from a specific date?
在我的应用程序中,用户从日期和时间选择器(从过去的日期)中选择一个日期和时间,然后我想从该日期开始计时,我需要 运行服务,这样如果我的应用程序被杀死,计时器就不会停止。
我在 Whosebug 上尝试了 Chronometer 和一些类似的解决方案,但没有得到任何正确的解决方案。
请看下图,和我需要的太像了:
用于获取日期差异(此处,date2
可以是用户选择的日期,date1
可以是当前日期时间(您可以通过调用获得:new Date()
)):
public static String getDifferenceBetweenDates(Date date1, Date date2) {
long secondsInMilli = 1000;
long minutesInMilli = secondsInMilli * 60;
long hoursInMilli = minutesInMilli * 60;
long daysInMilli = hoursInMilli * 24;
long difference = date2.getTime() - date1.getTime();
long elapsedDays = difference / daysInMilli;
difference = difference % daysInMilli;
long elapsedHours = difference / hoursInMilli;
difference = difference % hoursInMilli;
long elapsedMinutes = difference / minutesInMilli;
difference = difference % minutesInMilli;
long elapsedSeconds = difference / secondsInMilli;
return String.format("%s days %s hours %s minutes %s seconds", elapsedDays, elapsedHours, elapsedMinutes, elapsedSeconds);
}
现在,一旦你得到差异,你就可以使用 this 作为一个 Count Up Timer 并定义 onTick() 每隔 mCountUpInterval
更新你的视图时间间隔(在 CountUpTimer class 中定义)
在我的应用程序中,用户从日期和时间选择器(从过去的日期)中选择一个日期和时间,然后我想从该日期开始计时,我需要 运行服务,这样如果我的应用程序被杀死,计时器就不会停止。 我在 Whosebug 上尝试了 Chronometer 和一些类似的解决方案,但没有得到任何正确的解决方案。
请看下图,和我需要的太像了:
用于获取日期差异(此处,date2
可以是用户选择的日期,date1
可以是当前日期时间(您可以通过调用获得:new Date()
)):
public static String getDifferenceBetweenDates(Date date1, Date date2) {
long secondsInMilli = 1000;
long minutesInMilli = secondsInMilli * 60;
long hoursInMilli = minutesInMilli * 60;
long daysInMilli = hoursInMilli * 24;
long difference = date2.getTime() - date1.getTime();
long elapsedDays = difference / daysInMilli;
difference = difference % daysInMilli;
long elapsedHours = difference / hoursInMilli;
difference = difference % hoursInMilli;
long elapsedMinutes = difference / minutesInMilli;
difference = difference % minutesInMilli;
long elapsedSeconds = difference / secondsInMilli;
return String.format("%s days %s hours %s minutes %s seconds", elapsedDays, elapsedHours, elapsedMinutes, elapsedSeconds);
}
现在,一旦你得到差异,你就可以使用 this 作为一个 Count Up Timer 并定义 onTick() 每隔 mCountUpInterval
更新你的视图时间间隔(在 CountUpTimer class 中定义)