我需要在未来的指定日期和现在的格式Days:Hours:Minutes之间显示倒数计时器。 例如,结束日期是2013年12月4日下午1:30,现在是2013年12月3日12:30 PM,我的textView(或任何其他视图)应显示"时间重新生成1天:1小时:0分钟"
我不想要使用joda-time库,因为它将我的应用程序大小增加了大约4.1 MB,我只需要在我的应用程序中使用一次日期/时间功能。 我使用的是java提供的日历API,我无法实现这个'计时器'倒计时器'功能
知道我应该如何实现这个吗?
编辑:我的应用程序只会在1个时区使用,即。 EST,所以我不必担心时区校正
编辑:到目前为止我尝试过的,获取2个日历的月份
cal1.get(Calendar.MONTH); //to get the month
cal2.get(Calendar.MONTH);
cal1.get(Calendar.DAY_OF_MONTH); //to get the day
cal2.get(Calendar.DAY_OF_MONTH);
cal1.get(Calendar.HOUR_OF_DAY); //to get the hour in 24 hours
cal2.get(Calendar.HOUR_OF_DAY);
cal1.get(Calendar.MINUTE); //to get the minutes
cal2.get(Calendar.MINUTE);
cal1.get(Calendar.SECOND); //to get seconds
cal2.get(Calendar.SECOND);
现在我减去几个月,如果它是0那么我知道差异小于1个月,同样我减去天,小时,分钟。然而,这并没有给我一个准确的结果。示例 - 今天2013年7月6日,即2013年7月7日结束日期,根据我的算法,它会说剩余时间是 1天和-1小时,我运行一个计时器来执行每个任务第二
我需要一个更好的算法和更好的显示方法,我在UI线程上一次又一次地做同样的任务,这可能会导致我感觉迟到
答案 0 :(得分:2)
我猜你有两个java.util.Date
个对象需要比较。首先,你想拥有一种每N秒执行一次的计时器。 Handler.postDelayed()
可以正常使用。每次执行时,都使用timeMs = futureDate.getTime() - System.currentTimeMillis()
。这给你的时间差以毫秒为单位。然后,您只需将其转换为所需的格式:例如seconds = timeMs / 1000 % 60
。