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:
Arturo Bernal 2024-02-23 18:45:06 +01:00 committed by GitHub
parent 407b9152cc
commit f2b9a374d8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 5 additions and 2 deletions

View File

@ -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;

View File

@ -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