我希望将两个DateTime对象之间的区别作为DateTime而不是作为Period或类似的东西。我怎么能这样做?
答案 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和日历。计算两个日期之间的差异很容易。
答案 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);
}