时间和日历

时间:2011-11-10 19:08:05

标签: java datetime calendar

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

我可以在磨坊中抽出时间,而不是在需要打印时格式化吗?

6 个答案:

答案 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>