3

我想将两个 DateTime 对象之间的区别作为 DateTime 而不是 Period 或类似的东西。我怎样才能做到这一点 ?

4

4 回答 4

4

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

2012 年 9 月 25 日和 2012 年 12 月 25 日有什么区别?这是两个月,或约 60 天(我没有准确检查过)——但它肯定不是“1970 年 2 月 20 日”或类似的东西。

如果您发现自己想要差异化DateTime,这意味着您的设计中的某些东西搞砸了,您应该重新审视它。如果您无法准确确定问题出在哪里,您可以向我们提供更多信息,我们也许能够确定类型错误的位置,但从根本上说您所要求的不起作用。

于 2012-09-25T08:36:56.673 回答
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);
}
于 2012-09-25T09:12:44.560 回答
0

如果我理解您的问题,您可以将日历类方法compareTo用于表示两次之间的毫秒数的 int 值。

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

指定者:接口 Comparable 中的 compareTo

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

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

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

于 2012-09-25T08:49:54.133 回答
0

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

见和。DateFormat_SimpleDateFormatCalendar

于 2012-09-25T08:52:43.340 回答