是否将两个DateTime之间的差异作为DateTime对象



我想将两个DateTime对象之间的差异作为DateTime,而不是作为Period或类似的对象。我该怎么做?

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

2012年9月25日和2012年12月25日有什么区别?这是两个月,或者大约60天(我还没有确切核实),但肯定不是"1970年2月20日"之类的。

如果你发现自己想要作为DateTime的差异,这意味着你的设计中有些地方搞砸了,你应该重新审视它。如果你很难准确地找出问题所在,你可以给我们更多信息,我们可能能够确定类型错在哪里,但从根本上说,你想要的是行不通的。

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

参见DateFormatSimpleDateFormatCalendar

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

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

指定:compareTo在接口Comparable 中

参数:另一个日历-要比较的日历。

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

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

正如其他人所说,不确定你为什么想要这个,但下面的代码会给你两个日期之间的天数,如果你想要,这个数字加上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);
}

最新更新