【发布时间】:2020-04-13 00:37:32
【问题描述】:
我正在尝试从范围中获取下/上端点,当涉及到获取这些下/上端点时,它会引发如下异常:
java.lang.IllegalArgumentException: No instant converter found for type: java.time.ZonedDateTime
at org.joda.time.convert.ConverterManager.getInstantConverter(ConverterManager.java:166)
at org.joda.time.base.BaseDateTime.<init>(BaseDateTime.java:171)
at org.joda.time.DateTime.<init>(DateTime.java:257)
代码:
@Override
public WeatherStatus getForecastForFlightOverall(String icao, ... flight) {
...
if ( flightmapIntegration.isMetIntegrationEnabled() ) {
List<ViewFlightAirportDTO> airports = getRoutes(icao, flight);
Range<ZonedDateTime> range = getRange(airports);
DateTime from = range.lowerEndpoint() == null ? null : new DateTime(range.lowerEndpoint());
...
try {
....
}
}
return status != null ? status : WeatherStatus.UNKNOWN;
}
getRange 方法:
private Range<ZonedDateTime> getRange(List<...> ...) {
if ( ....isEmpty() ) {
return Range.singleton(ZonedDateTime.now());
}
Range<ZonedDateTime> result = validityRangeOf(....get(0));
for (int i = 1; i < flightAirports.size(); i++) {
result = ...
}
return result;
}
validtyRangeOf 方法:
private Range<ZonedDateTime> validityRangeOf(ViewFlightAirportDTO firstAirport) {
return Range.closed(firstAirport.getValidFrom(), firstAirport.getValidTill());
}
编辑 我可以这样制作,但不知道如何完成。我的意思是 from/to 也可以是 ZonedDateTime 的类型,但我不知道如何使用下/上端点创建它的对象
ZonedDateTime from = range.lowerEndpoint() == null ? null : new ZonedDateTime(...);
ZonedDateTime to = ...
【问题讨论】:
-
您不能将 ZonedDateTime 作为参数传递给 DateTime 构造函数。这就是这条消息的意思。
-
范围是一个范围
。为什么要从已经是 ZonedDateTime 的值创建新的 ZonedDateTime?直接使用 range.lowerEndpoint()即可。 -
@JBNizet 该死的。我是瞎子。谢谢/。
标签: java date datetime jodatime zoneddatetime