【问题标题】:Display days, hours, minutes in between 2 dates in java在java中显示2个日期之间的天,小时,分钟
【发布时间】:2013-10-29 17:03:59
【问题描述】:

我需要以 Days:Hours:Minutes 格式显示未来指定日期和现在之间的倒计时计时器。 例如,结束日期是 2013 年 12 月 4 日下午 1:30,现在是 2013 年 12 月 3 日下午 12:30,我的 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 日凌晨 4 日,结束日期 2013 年 7 月 7 日凌晨 3 日,根据我的算法,它会说剩余时间是 1 天零 -1 小时,我运行一个计时器来执行这个任务第二个

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

【问题讨论】:

  • 您是否尝试过任何方法来实现这一目标?我相信你一定尝试过一些东西,如果你也可以发布它,它会有所帮助
  • 好吧,给我几分钟
  • 更新了我目前的想法/代码@Abu
  • 尝试@SimonSays在答案中提到的方法

标签: java android datetime android-calendar


【解决方案1】:

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

【讨论】:

  • 这是有道理的,所以一旦我得到两个日期之间的时间差(以毫秒为单位),我只需要将它们转换成我想要的格式,你能解释一下转换部分吗?跨度>
  • 如上所述,你只需要计算它。 seconds = timeMs / 1000 % 60minutes = timeMs / 1000 / 60 % 60 等等。
猜你喜欢
  • 2012-05-19
  • 1970-01-01
  • 1970-01-01
  • 2021-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-23
相关资源
最近更新 更多