如何创建日期计时器

时间:2013-09-25 19:28:26

标签: java date countdowntimer

我正在创建一个倒数计时器,我有2个日期(现在和结束日期)格式mm:dd:yyyy:小时:分钟:秒我需要显示剩余时间,实际上是
 结束日期:时间 - 当前日期:时间

我想过以毫秒为单位转换这两个日期,减去然后将它们转换回日期,但这似乎太麻烦了 如何在java中有效地实现这个?

2 个答案:

答案 0 :(得分:1)

joda-time框架为您完成

String date = "02:13:2013:14:45:42"; // one of these is your end time
String date2 = "02:13:2013:14:45:49"; // the other gets smaller every time as you approach the end time
// 7 seconds difference

DateTimeFormatter format = DateTimeFormat.forPattern("MM:dd:yyyy:HH:mm:ss"); // your pattern

DateTime dateTime = format.parseDateTime(date);
System.out.println(dateTime);

DateTime dateTime2 = format.parseDateTime(date2);
System.out.println(dateTime2);

Duration duration = new Duration(dateTime, dateTime2);
System.out.println(duration.getMillis());

打印

2013-02-13T14:45:42.000-05:00
2013-02-13T14:45:49.000-05:00
7000

因此,您将日期字符串解析为DateTime个对象,并使用Duration对象计算某个时间单位的时差。

您也可以使用IntervalPeriod对象(取决于所需的精度)

System.out.println(duration.toPeriod().get(DurationFieldType.seconds()));

你陈述

  

我想过以毫秒换算两个日期,减去和   然后将它们转换回日期

为什么要将它们转换回来?你已经有了它们。你只对两者之间的时间感兴趣。

答案 1 :(得分:0)

日历直到= Calendar.getInstance();

until.set( “YYYY”, “DD”, “HH”, “MM”, “SS”);

getTimeDifference(直至);


private String getTimeDifference(Calendar until) {
    Calendar nowCal = (Calendar) until.clone();
    nowCal.clear();
    Date nowDate = new Date(System.currentTimeMillis());
    nowCal.setTime(nowDate);
    int sec = until.get(Calendar.SECOND) - nowCal.get(Calendar.SECOND);
    int min = until.get(Calendar.MINUTE) - nowCal.get(Calendar.MINUTE);
    int hrs = until.get(Calendar.HOUR) - nowCal.get(Calendar.HOUR);

    String timeDiff = hrs+":"+min+":"+sec;

    return timeDiff;
}