两个定义时间之间的倒计时?

时间:2013-07-14 11:54:16

标签: java android

**我想构建一个Android应用程序,它将计算两个定义时间之间的时间(例如从12.45到21:00。)我该怎么做?**

/////////////////////////////////////////////// ///////////////////////////

我试过这种方式。我认为我有错误

f`  Integer year = null;
    Integer monthOfYear = null;
    Integer dayOfMonth = null;
    Integer hourOfDay = null;
    Integer minuteOfHour = null;
    Integer secondOfMinute = null;




      DateTime(year, monthOfYear, dayOfMonth, hourOfDay, minuteOfHour, secondOfMinute);


      DateTime start = new DateTime(2013, 07, 14, 12, 45, 0);
      DateTime end = new DateTime(2013, 07, 14, 21, 0, 0);

      Seconds diff = Seconds.secondsBetween(start, end);
      mTextField.setText(diff.getSeconds());`

我该怎么办?

1 个答案:

答案 0 :(得分:3)

你可以使用joda.time library来减去时间并在几秒钟内得到结果。

您可以使用构造函数创建两个DateTime objects,该构造函数允许您使用int提交时间,例如DateTime(int year, int monthOfYear, int dayOfMonth, int hourOfDay, int minuteOfHour, int secondOfMinute, DateTimeZone zone)

DateTime start = new DateTime(2013, 07, 14, 12, 45, 0, zone);
DateTime end = new DateTime(2013, 07, 14, 21, 0, 0, zone);

然后你可以使用yoda-time seconds to find the diference的函数。

Seconds diff = Seconds.secondsBetween(start, end);

编辑:在这里使用main方法显示标准Java-Class中的示例:

import org.joda.time.DateTime;
import org.joda.time.Seconds;


public class Test {

    /**
     * @param args
     */
    public static void main(String[] args) {
         DateTime start = new DateTime(2013, 07, 14, 12, 45, 0);
          DateTime end = new DateTime(2013, 07, 14, 21, 0, 0);

          Seconds diff = Seconds.secondsBetween(start, end);
          System.out.println(diff.getSeconds());

    }

}

这是另一个计算直到下一个圣诞节的秒数的例子

    public static void main(String[] args) {
     DateTime start = new DateTime();
     DateTime end;
     if(start.getDayOfMonth()>24 && start.getMonthOfYear()==12)
     {
         end = new DateTime(start.getYear()+1, 12, 25, 0, 0, 0);
     }
     else
     {
         end = new DateTime(start.getYear(), 12, 25, 0, 0, 0);
     }
      Seconds diff = Seconds.secondsBetween(start, end);
      System.out.println(diff.getSeconds());

}

如前所述,你可以在没有joda时间的情况下完成所有这些工作。在这种情况下,您只需使用java.util.Date,它有一个名为getTime()的方法,它为您提供自1970年以来的毫秒时间戳。如果您从两个java.util.Date对象(类型为long)获取时间戳并减去它们,你得到这两个日期之间的毫秒数。将此缩短1000以获得秒数。简单但不像joda时间方法那样面向对象。

在上述情况下,这将是:

import java.util.Date;




public class Test {

/**
 * @param args
 */
public static void main(String[] args) {
     Date start = new Date(2013, 07, 14, 12, 45, 0);
     Date end = new Date(2013, 07, 14, 21, 0, 0);
     System.out.println((end.getTime()-start.getTime())/1000);
}

}

但是,不推荐使用此java.util.Date构造函数,不应再使用它。处理日期的新方法有点令人讨厌and is documented here