我知道这可能是一个非常愚蠢的问题,但我想知道是否有办法减去另一个本地日期时间,或者如果没有,将localDateTime强制转换为日期时间然后从那里减去?
我需要能够计算出日期时间差,在记录foo的开始和记录栏的开始之间(这也是Foo的结束)
我对java很新,为了简单起见,我希望能够将它保持在大致相同的布局中,而不是必须从秒等转换。
如果添加和减去LocalDateTime不是一个选项,我知道一旦我在dateTime,我可以使用以下方法减去它们:
Period diff = new Period(start, end);
由于数据的目的,我需要保留日期和时间以使其工作,并且如前所述,我希望保持相当简单,因此无需在秒之间转换为约会。
我的问题实际上只是以一种可接受的格式获取它,正如我所说,我对java和面向对象整体都是新手,所以请不要因为这个看似简单的问题而嘲笑我。 / p>
谢谢,
强尼
答案 0 :(得分:14)
问题是关于Joda-Time,而不是关于Java 8.问题并不是很清楚。无论如何,这个答案是关于Java 8的,因此不直接回答这个问题。虽然我认为如果有人想要使用Java 8,这是一个合适的答案。
您应该查看java.time.Duration
课程。
LocalDateTime from = ... ;
LocalDateTime to = ... ;
Duration duration = Duration.between(from, to);
如果你真的想获得一个Period
,它仍然很容易:
LocalDateTime from = ... ;
LocalDateTime to = ... ;
Period period = Period.between(from.toLocalDate(), to.toLocalDate());
答案 1 :(得分:5)
为什么不直接使用LocalDateTime
作为参数类型:
LocalDateTime start = new LocalDateTime(2016, 10, 4, 17, 45);
LocalDateTime end = LocalDateTime.now();
PeriodType ptype = PeriodType.yearMonthDayTime();
Period diff = new Period(start, end, ptype);
另见API of Joda-Time。您无需转发DateTime
。