gpt4 book ai didi

java - localdatetime 的 jodatime 间隔

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:18:51 26 4
gpt4 key购买 nike

当我输入这些内容时,我自己想通了。我将为包括我自己在内的 future 用户回答我自己的问题。

我希望能够在一个时间间隔内保存到LocalDateTime 对象,但似乎不允许。当我这样做时:

    LocalDateTime start = new LocalDateTime();

LocalDateTime end = start.plusMinutes( 30 );

Interval interval = new Interval( start, end );

我遇到编译问题。我认为这是因为 LocalDateTime 不是 ReadableInstant

是否有合适的解决方法?

看起来这是可能的:

Period period = new Period(开始,结束);

但是你失去了“getStart\End”方法。

最佳答案

为了将 IntervalLocalDateTime 一起使用,您必须这样做:

Interval interval = new Interval( start.toDateTime(), end.toDateTime() );

结果时间使调试变得容易,因为时间将从本地时区转换而来,并且您知道您正在处理的是哪个时区。但是在夏令时期间会出现问题。要解决此问题,请将结果强制为 DateTimeZone.UTC,在这种情况下,您将丢失与时间关联的时区数据(如果您实际开始使用 LocalDateTime,通常不会关心这些数据,但请确保您始终如一地使用它,永远不会在没有转换的情况下构建您的 Interval

Interval interval = new Interval( 
start.toDateTime(DateTimeZone.UTC), end.toDateTime(DateTimeZone.UTC) );

下面的测试证明了这一点(假设你在 EST 时区)

@Test
public void testLocalDateTimeDST() {
LocalDateTime dst_2017_03_12 = LocalDateTime.parse("2017-03-12T02:01:00");
System.out.println(dst_2017_03_12);
try {
System.out.println(dst_2017_03_12.toDateTime());
Assert.fail("Should've thrown an IllegalInstantException");
} catch (IllegalInstantException e) {

}
System.out.println(dst_2017_03_12.toDateTime(DateTimeZone.UTC));
}

关于java - localdatetime 的 jodatime 间隔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15488710/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com