我已经尝试过关于这个片段的几乎所有的东西,而且我仍然得到了IllegalInstentException。
public int getDateDay() {
DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd");
DateTime dt;
try {
dt = formatter.parseDateTime(date);
} catch (IllegalInstantException e) {
dt = formatter.parseLocalDateTime(date).toDateTime();
}
return dt.getDayOfMonth();
}致命例外:由于时区偏移过渡(夏令时“间隙”)导致的非法瞬间: 2018-10-21T00:00:00.000 (美国/圣保罗) org.joda.time.chrono.ZonedChronology.localToUTC (ZonedChronology.java:157) org.joda.time.chrono.ZonedChronology.getDateTimeMillis (ZonedChronology.java:122) org.joda.time.chrono.AssembledChronology.getDateTimeMillis (AssembledChronology.java:133) org.joda.time.base.BaseDateTime。(BaseDateTime.java:257) org.joda.time.DateTime。(DateTime.java:532) org.joda.time.LocalDateTime.toDateTime (LocalDateTime.java:750) org.joda.time.LocalDateTime.toDateTime (LocalDateTime.java:731)
发布于 2018-10-02 13:49:09
似乎输入不是一个有效的日期。这个问题在这个页面中已经讨论过了。
原因:
Joda-Time只允许键类存储有效的日期时间。例如,2月31日不是有效的日期,因此不能存储它(除部分日期外)。 同样的有效日期时间原则也适用于夏令时(DST).在许多地方使用DST,当地的时钟在春天向前移动一个小时,秋天/秋天移动一个小时。这意味着,在春天,在不存在当地时间的情况下,存在着一个“差距”。 “由于时区偏移过渡而导致的非法瞬间”的错误指的是这一差距。-它意味着您的应用程序试图在间隔内创建一个日期时间--这个时间不存在。由于Joda-Time对象必须是有效的,所以这是不允许的。
可能的解决办法如下:
https://stackoverflow.com/questions/52609641
复制相似问题