您可以使用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 的新方法有点令人讨厌,并在此处记录。