2 xlee1905 XLee1905 于 2014.12.11 20:27 提问

java中一个关于joda.time.DateTime问题

今天碰到一个问题:
public class PlanDateTest {
public static void main(String[] args) {
DateTime time = new DateTime(1991, 4, 14, 0, 0, 0);
System.out.println(time.getMillis());
}
}
在time 进行new 的时候,出现了异常:
Exception in thread "main" java.lang.IllegalArgumentException: Illegal instant due to time zone offset transition: 1991-04-13T16:00:00.000
经过测试,只发现这个时间的实例化会出问题,其他的时间实例化不会出问题。

long l = 671558400000L;
DateTime time2 = new DateTime(l);
time2能正常实例化,可是其withMillisOfDay(int millis)则会抛出:
Exception in thread "main" org.joda.time.IllegalFieldValueException: Value 13 for millisOfDay is not supported: Illegal instant due to time zone offset transition: 1991-04-14T00:00:00.013 (Asia/Shanghai)

请问有人碰到过这类似的问题吗?

2个回答

theoneforever520
theoneforever520   2017.05.25 14:24

用 LocalDateTime代替DateTime

qq_38067654
qq_38067654 测了一下,这样写可以解决问题。
大约 2 个月之前 回复
qqlindexi
qqlindexi   2014.12.11 20:33

try
{
DateTime time = new DateTime(1991, 4, 14, 0, 0, 0);
System.out.println(time.getMillis());
}
catch(Exception e)
{

}

XLee1905
XLee1905 这可是joda-time包的一个BUG?
3 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!