如何添加/减去两个时间对象。我有两个时间对象(到达和离开)格式为“yyyy / MMM / dd HH:mm:ss”。我需要打印出发和到达时间之间的差异。我正在制作时间广告:
public String getTime() {
Calendar currentDate = Calendar.getInstance();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MMM/dd HH:mm:ss");
return formatter.format(currentDate.getTime());
}
我可以在磨坊中抽出时间,而不是在需要打印时格式化吗?
答案 0 :(得分:4)
查看Joda Time库。
您可以轻松地减去并添加DateTime并轻松找出间隔:
// interval from start to end
DateTime start = new DateTime(2004, 12, 25, 0, 0, 0, 0);
DateTime end = new DateTime(2005, 1, 1, 0, 0, 0, 0);
Interval interval = new Interval(start, end);
答案 1 :(得分:2)
public long getTimeDiff() throws Exception {
String arrival = "2011/Nov/10 13:15:24";
String departure = "2011/Jan/10 13:15:24";
SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MMM/dd HH:mm:ss");
java.util.Date date1 = formatter.parse(arrival);
java.util.Date date2 = formatter.parse(departure);
return date2.getTime() - date1.getTime();
}
答案 2 :(得分:1)
将它们转换为日期,然后转换为long并减去,这将给出以毫秒为单位的时差,
Date d1 = DateFormat.parse(time1);
Date d2 = DateFormat.parse(time2);
long diffInMilliSeconds = d1.getTime()-d2.getTime();
答案 3 :(得分:0)
使用getTime方法可以获得两个日历的时间(以毫秒为单位)。当您可以将减法结果转换为您需要的度量单位时。如果你想看看Joda图书馆时会认真对待时间/持续时间
UPD。你应该两次调用getTime。返回的第一个对象是Date,当你在Date上调用getTime时,你得到很长的值。
答案 4 :(得分:0)
我会以毫秒为单位转换两个时间/日期对象。然后我会减去它们(我们正在处理多头)。
然后我将从结果long值创建一个Date对象。之后,您可以使用Calendar.setDate(Date)构建日历。
问候!
答案 5 :(得分:0)
是的,从您的日期开始,并使用getTime()
转换为毫秒(或getTimeInMillis()
的日历。这会给你很长的价值,你可以减去。这很容易。
然后您可以自己将这些毫秒转换为可读格式。但是使用打包的库来实现它可能是有意义的。
有些人喜欢这些类型的日期计算的Joda库。我发现Commons Lang太棒了。它提供DateUtils
,如果您发现想要执行舍入或截断日期到最近的分钟或小时等计算,这将非常有用。对您最有用的部分是DurationFormatUtils
类。为你提供像formatDurationHMS
这样的函数来格式化为漂亮的小时:分钟:第二个显示和formatDurationWords
来获取文本(花哨!)或其他类似的函数,以便轻松地将毫秒格式化为一个很好的人类可读格式。 / p>