Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 作为DateTime对象获取两个DateTimes之间的差异?_Java_Jodatime - Fatal编程技术网

Java 作为DateTime对象获取两个DateTimes之间的差异?

Java 作为DateTime对象获取两个DateTimes之间的差异?,java,jodatime,Java,Jodatime,我想把两个DateTime对象之间的差异作为DateTime,而不是句点之类的。我该怎么做呢?你不能,因为这没有意义 2012年9月25日和2012年12月25日之间有什么区别?这是两个月,或者大约60天(我还没有查清楚),但肯定不是“1970年2月20日”之类的 如果您发现自己希望将差异作为日期时间,这意味着您的设计中有一些东西弄糟了,您应该重新审视它。如果您在确定问题的确切位置时遇到困难,您可以向我们提供更多信息,我们可能能够确定类型错误的位置,但从根本上说,您所要求的不会起作用。如果我理解

我想把两个DateTime对象之间的差异作为DateTime,而不是句点之类的。我该怎么做呢?

你不能,因为这没有意义

2012年9月25日和2012年12月25日之间有什么区别?这是两个月,或者大约60天(我还没有查清楚),但肯定不是“1970年2月20日”之类的


如果您发现自己希望将差异作为
日期时间
,这意味着您的设计中有一些东西弄糟了,您应该重新审视它。如果您在确定问题的确切位置时遇到困难,您可以向我们提供更多信息,我们可能能够确定类型错误的位置,但从根本上说,您所要求的不会起作用。

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

公共整数比较(日历与其他日历) 比较由两个日历对象表示的时间值(与历元的毫秒偏移)

指定的:比较到接口中的可比较

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

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

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

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


请参阅,和。

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

因此,如果日期/时间相隔两个月,您是否预期结果为1970年3月1日?你能举个例子吗?你为什么要这样做?如果我计算下午1点和下午2点之间的差值,那么就绝对日期/时间而言,我期望1小时是多少?这有什么意义?我无法想象“2011年3月3日”和“2008年1月1日”之间的差异会是“0003年2月2日”(或者类似闰年和所有这些恶作剧的情况)。我需要一种方法来计算两个日期之间的差异。另一个方法使用此差异并接受日期时间。您需要重写第二个方法,因为它没有意义。请参阅构造函数-(int year,int monthOfYear,int dayOfMonth,int hourOfDay,int minuteOfHour,int secondOfMinute,int millisOfSecond)2012年9月25日和2012年12月25日-我希望将其表示为DateTime(2012,60…等)。这样可以吗?但它不起作用,我不断地出现错误,比如当我使用相同的日期时,月份应该在1-12之间,但这是可以计算出来的。A
DateTime
表示一个日期和一个时间。它不代表,也不可能代表“60天”。你不应该试图把它硬塞进一个
DateTime
——你应该改变你的代码,这样你就不需要把它硬塞进
DateTime
@davidblaine:这有什么意义?一年中一个月的“60”给你一个合理的值是多少?