2011-11-10 96 views
2

如何添加/减去两个时间对象。我有两个时间对象(到达和离开),格式为“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

作为一个方面说明,获取两个日期之间(毫秒)的持续时间(毫秒)是非平凡的 - 它取决于年份和时区(当然,这主要是为了处理夏令时)。相关代码需要计算出年/月/日等。为_both_日期,然后处理_those_数字。 –

回答

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(); 
} 
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); 
0

您可以以毫秒为单位使用getTime方法两个日历得到的时间。当您可以将减法结果转换为您需要的单位时。如果您要认真研究时间/工期,请查看Joda库

Upd。你应该调用两次getTime。返回的第一个对象是Date,当您在Date上调用getTime时,您将获得较长的值。

0

我会以毫秒为单位转换两个时间/日期对象。然后我会减去它们(我们正在处理多头)。

然后,我会从结果长值创建一个Date对象。之后,您可以使用Calendar.setDate(Date)构造日历。

问候!

1

将它们转换为日期,然后长和减去,将给予在毫秒的时间差,

Date d1 = DateFormat.parse(time1); 
Date d2 = DateFormat.parse(time2); 
long diffInMilliSeconds = d1.getTime()-d2.getTime();