-5

** 我想构建一个 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());`

我怎么能这样?

4

1 回答 1

3

您可以使用joda.time 库,它允许您减去时间并以秒为单位获得结果。

您将使用允许您使用 int 提交时间的构造函数创建两个DateTime 对象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 的功能来找到差异

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

编辑:为了显示这里使用的代码,一个标准 Java 类中的示例带有一个 main 方法:

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 time 方法那样面向对象。

在上述情况下,这将是:

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 构造函数已弃用,不应再使用。处理 Date 的新方法有点令人讨厌,并在此处记录

于 2013-07-14T12:00:35.467 回答