我想将两个 DateTime 对象之间的区别作为 DateTime 而不是 Period 或类似的东西。我怎样才能做到这一点 ?
4 回答
你不能,因为它没有意义。
2012 年 9 月 25 日和 2012 年 12 月 25 日有什么区别?这是两个月,或约 60 天(我没有准确检查过)——但它肯定不是“1970 年 2 月 20 日”或类似的东西。
如果您发现自己想要差异化DateTime
,这意味着您的设计中的某些东西搞砸了,您应该重新审视它。如果您无法准确确定问题出在哪里,您可以向我们提供更多信息,我们也许能够确定类型错误的位置,但从根本上说您所要求的将不起作用。
正如其他人所说,不确定你为什么想要这个,但下面的代码会给你两个日期之间的天数,如果你想要这个数字加上 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);
}
如果我理解您的问题,您可以将日历类方法compareTo用于表示两次之间的毫秒数的 int 值。
public int compareTo(Calendar anotherCalendar) 比较两个 Calendar 对象表示的时间值(从 Epoch 开始的毫秒偏移量)。
指定者:接口 Comparable 中的 compareTo
参数: anotherCalendar - 要比较的日历。
返回:
如果参数表示的时间等于此日历表示的时间,则值为 0;
如果此日历的时间早于参数表示的时间,则值小于 0;
如果此日历的时间在参数表示的时间之后,则值大于 0。
抛出: NullPointerException - 如果指定的 Calendar 为 null。IllegalArgumentException - 如果由于任何无效的日历值而无法获取指定 Calendar 对象的时间值。
您始终可以使用 DateFormat 和 Calendar。计算两个日期之间的差异很容易。