将两个DateTimes区分为DateTime对象?

时间:2012-09-25 08:34:37

标签: java jodatime

我希望将两个DateTime对象之间的区别作为DateTime而不是作为Period或类似的东西。我怎么能这样做?

4 个答案:

答案 0 :(得分:4)

你不能,因为它没有意义。

2012年9月25日到2012年12月25日有什么区别?这是两个月,或者大约60天(我还没有完全确定) - 但它肯定不是“1970年2月20日”或类似的东西。

如果你发现自己希望差异为DateTime,则意味着你的设计中的某些东西搞砸了,你应该重新审视它。如果您无法确切地解决问题所在,您可以向我们提供更多信息,我们可以确定类型错误的位置,但从根本上说,您要求不会工作

答案 1 :(得分:0)

如果我理解你的问题,你可以使用日历类方法compareTo作为一个int值,表示两次之间的毫秒数。

public int compareTo(Calendar anotherCalendar) 比较两个Calendar对象表示的时间值(与Epoch的毫秒偏移量)。

指定:在Comparable接口中的compareTo

参数:anotherCalendar - 要比较的日历。

<强>返回
如果参数表示的时间等于此日历表示的时间,则值为0;
如果此Calendar的时间早于参数表示的时间,则小于0的值;
如果此Calendar的时间在参数表示的时间之后,则值大于0.

<强>抛出:         NullPointerException - 如果指定的Calendar为null。         IllegalArgumentException - 如果由于任何无效的日历值而无法获取指定Calendar对象的时间值。

答案 2 :(得分:0)

您始终可以使用DateFormat和日历。计算两个日期之间的差异很容易。

请参阅DateFormatSimpleDateFormatCalendar

答案 3 :(得分:0)

正如其他人所说不确定你为什么会这样,但下面的代码会给你两个日期之间的天数,如果你想要这个数字加上1970年日期

@Test
public void test() {
    DateTime d1 = new DateTime(2011, 1, 1, 0, 0);
    DateTime d2 = new DateTime(2011, 2, 1, 0, 0);
    int days = Days.daysBetween(d1, d2).getDays();
    assertEquals(31, days);

    DateTime dateTime = new DateTime(new Date(0), DateTimeZone.UTC).plusDays(days);
    assertEquals(new DateTime(1970, 2, 1, 0, 0, 0, DateTimeZone.UTC), dateTime);
}
相关问题