java - 在java中显示两个日期之间的天,小时,分钟

标签 java android datetime android-calendar

我需要以天:小时:分钟的格式显示 future 指定日期和现在之间的倒计时器。 因此,例如结束日期是 2013 年 12 月 4 日下午 1:30,现在是 2013 年 12 月 3 日下午 12:30,我的 textView(或任何其他 View )应显示“剩余时间 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 日凌晨 4 点,结束日期为 2013 年 7 月 7 日凌晨 3 点,根据我的算法,它会说剩余时间为 1 天零 1 小时,我运行一个计时器来执行此任务第二次

我需要一个更好的算法和更好的方式来显示它,我在 UI 线程上一次又一次地执行相同的任务,这可能会导致我感觉滞后

最佳答案

我猜您有两个 java.util.Date 对象需要比较。首先,您想要某种每 N 秒执行一次的计时器。 Handler.postDelayed() 对此效果很好。每次执行时,您都使用timeMs = futureDate.getTime() - System.currentTimeMillis()。这给出了以毫秒为单位的时间差。然后您只需将其转换为所需的格式:例如秒 = timeMs/1000 % 60

关于java - 在java中显示两个日期之间的天,小时,分钟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19664696/

相关文章:

android - 尝试在我的 Android 应用程序中调试某些 C 代码时获取 "Unknown Application ABI"

android - 当组成员尝试获取成员列表时获得禁止的身份验证

ios - NSDateFormatter stringFromDate : returning local time instead of UTC/GMT

java - 如何在 PrimeFaces 中使用未缩小版本的 jQuery?

java - RxJava : onBackpressureBlock() strange behavior

java - 建议使用 Spring、JSP 的 Web 报告工具

java - 在分区表中插入时获取生成的键值

java - 使用 Realm 浏览器在 Mac 上查看 Realm 文件的加密 key

Javascript新日期休息15天

python - 如果 pandas 数据框中的年份低于 1900,则更改年份