**我想构建一个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());`
我该怎么办?
答案 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。