HTTPCLIENT-2319 / Updated the parseDate method to solely catch DateTimeException, streamlining error handling for date parsing and conversion. This change ensures comprehensive management of parsing issues, including those due to absent time-zone information, aligning with our documentation that the method should return null when conversion to Instant is not feasible. (#551)
This commit is contained in:
parent
407b9152cc
commit
f2b9a374d8
|
@ -27,13 +27,13 @@
|
||||||
|
|
||||||
package org.apache.hc.client5.http.utils;
|
package org.apache.hc.client5.http.utils;
|
||||||
|
|
||||||
|
import java.time.DateTimeException;
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.time.ZoneId;
|
import java.time.ZoneId;
|
||||||
import java.time.ZoneOffset;
|
import java.time.ZoneOffset;
|
||||||
import java.time.format.DateTimeFormatter;
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.time.format.DateTimeFormatterBuilder;
|
import java.time.format.DateTimeFormatterBuilder;
|
||||||
import java.time.format.DateTimeParseException;
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
import java.util.TimeZone;
|
import java.util.TimeZone;
|
||||||
|
@ -145,6 +145,8 @@ public final class DateUtils {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Parses the date value using the given date/time formats.
|
* Parses the date value using the given date/time formats.
|
||||||
|
* <p>This method can handle strings without time-zone information by failing gracefully, in which case
|
||||||
|
* it returns {@code null}.</p>
|
||||||
*
|
*
|
||||||
* @param dateValue the instant value to parse
|
* @param dateValue the instant value to parse
|
||||||
* @param dateFormatters the date/time formats to use
|
* @param dateFormatters the date/time formats to use
|
||||||
|
@ -165,7 +167,7 @@ public final class DateUtils {
|
||||||
for (final DateTimeFormatter dateFormatter : dateFormatters) {
|
for (final DateTimeFormatter dateFormatter : dateFormatters) {
|
||||||
try {
|
try {
|
||||||
return Instant.from(dateFormatter.parse(v));
|
return Instant.from(dateFormatter.parse(v));
|
||||||
} catch (final DateTimeParseException ignore) {
|
} catch (final DateTimeException ignore) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
|
|
|
@ -84,6 +84,7 @@ public class TestDateUtils {
|
||||||
@Test
|
@Test
|
||||||
public void testMalformedDate() {
|
public void testMalformedDate() {
|
||||||
Assertions.assertNull(DateUtils.parseDate("Fri, 14 Oct 2005 00:00:00 GMT", new DateTimeFormatter[] {}));
|
Assertions.assertNull(DateUtils.parseDate("Fri, 14 Oct 2005 00:00:00 GMT", new DateTimeFormatter[] {}));
|
||||||
|
Assertions.assertNull(DateUtils.parseDate("Thu Feb 22 17:20:18 2024", new DateTimeFormatter[] {}));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
Loading…
Reference in New Issue