org.apache.hc.client5.http.utils

## Class DateUtils

- java.lang.Object
- - org.apache.hc.client5.http.utils.DateUtils

    public final class DateUtils
    extends Object

A utility class for parsing and formatting HTTP dates as used in cookies and other headers.

Since:
  4.3

### Field Summary

Fields
`static DateTimeFormatter` `FORMATTER_ASCTIME` Date formatter used to parse HTTP date headers in in ANSI C `asctime()` format.
`static DateTimeFormatter` `FORMATTER_RFC1036` Date formatter used to parse HTTP date headers in RFC 1036 format.
`static DateTimeFormatter` `FORMATTER_RFC1123` Date formatter used to parse HTTP date headers in the Internet Message Format specified by the HTTP protocol.
`static TimeZone` `GMT` Deprecated. This attribute is no longer supported as a part of the public API.
`static String` `INTERNET_MESSAGE_FORMAT`
`static String` `PATTERN_ASCTIME` Date format pattern used to parse HTTP date headers in ANSI C `asctime()` format.
`static String` `PATTERN_RFC1036` Date format pattern used to parse HTTP date headers in RFC 1036 format.
`static String` `PATTERN_RFC1123` Deprecated. use `INTERNET_MESSAGE_FORMAT`
`static DateTimeFormatter[]` `STANDARD_PATTERNS` Standard date formatters: `FORMATTER_RFC1123`, `FORMATTER_RFC1036`, `FORMATTER_ASCTIME`.

### Method Summary

All Methods Static Methods Concrete Methods Deprecated Methods
`static void` `clearThreadLocal()` Deprecated. Noop method. Do not use.
`static String` `formatDate(Date date)` Deprecated. Use `formatStandardDate(Instant)`
`static String` `formatDate(Date date, String pattern)` Deprecated. Use `formatDate(Instant, DateTimeFormatter)`
`static String` `formatDate(Instant instant, DateTimeFormatter dateTimeFormatter)` Formats the given date according to the specified pattern.
`static String` `formatStandardDate(Instant instant)` Formats the given instant according to the RFC 1123 pattern.
`static boolean` `isAfter(org.apache.hc.core5.http.MessageHeaders message1, org.apache.hc.core5.http.MessageHeaders message2, String headerName)` Deprecated. This method is no longer supported as a part of the public API.
`static boolean` `isBefore(org.apache.hc.core5.http.MessageHeaders message1, org.apache.hc.core5.http.MessageHeaders message2, String headerName)` Deprecated. This method is no longer supported as a part of the public API.
`static Date` `parseDate(org.apache.hc.core5.http.MessageHeaders headers, String headerName)` Deprecated. Use `parseStandardDate(MessageHeaders, String)`
`static Date` `parseDate(String dateValue)` Deprecated. Use `parseStandardDate(String)`
`static Instant` `parseDate(String dateValue, DateTimeFormatter... dateFormatters)` Parses the date value using the given date/time formats.
`static Date` `parseDate(String dateValue, String[] dateFormats)` Deprecated. Use `parseDate(String, DateTimeFormatter...)`
`static Date` `parseDate(String dateValue, String[] dateFormats, Date startDate)` Deprecated. Use `parseDate(String, DateTimeFormatter...)`
`static Instant` `parseStandardDate(org.apache.hc.core5.http.MessageHeaders headers, String headerName)` Parses an instant value from a header with the given name.
`static Instant` `parseStandardDate(String dateValue)` Parses the instant value using the standard date/time formats (`PATTERN_RFC1123`, `PATTERN_RFC1036`, `PATTERN_ASCTIME`).
`static Date` `toDate(Instant instant)`
`static Instant` `toInstant(Date date)`
`static LocalDateTime` `toUTC(Date date)`
`static LocalDateTime` `toUTC(Instant instant)`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Field Detail

#### PATTERN_RFC1123

    @Deprecated
    public static final String PATTERN_RFC1123

Deprecated. use `INTERNET_MESSAGE_FORMAT`

See Also:
  Constant Field Values

#### INTERNET_MESSAGE_FORMAT

    public static final String INTERNET_MESSAGE_FORMAT

See Also:
  Constant Field Values

#### FORMATTER_RFC1123

    public static final DateTimeFormatter FORMATTER_RFC1123

Date formatter used to parse HTTP date headers in the Internet Message Format specified by the HTTP protocol.

Since:
  5.2

#### PATTERN_RFC1036

    public static final String PATTERN_RFC1036

Date format pattern used to parse HTTP date headers in RFC 1036 format.

See Also:
  Constant Field Values

#### FORMATTER_RFC1036

    public static final DateTimeFormatter FORMATTER_RFC1036

Date formatter used to parse HTTP date headers in RFC 1036 format.

Since:
  5.2

#### PATTERN_ASCTIME

    public static final String PATTERN_ASCTIME

Date format pattern used to parse HTTP date headers in ANSI C `asctime()` format.

See Also:
  Constant Field Values

#### FORMATTER_ASCTIME

    public static final DateTimeFormatter FORMATTER_ASCTIME

Date formatter used to parse HTTP date headers in in ANSI C `asctime()` format.

Since:
  5.2

#### STANDARD_PATTERNS

    public static final DateTimeFormatter[] STANDARD_PATTERNS

Standard date formatters: `FORMATTER_RFC1123`, `FORMATTER_RFC1036`, `FORMATTER_ASCTIME`.

Since:
  5.2

#### GMT

    @Deprecated
    public static final TimeZone GMT

Deprecated. This attribute is no longer supported as a part of the public API.

### Method Detail

#### toDate

    public static Date toDate(Instant instant)

Since:
  5.2

#### toInstant

    public static Instant toInstant(Date date)

Since:
  5.2

#### toUTC

    public static LocalDateTime toUTC(Instant instant)

Since:
  5.2

#### toUTC

    public static LocalDateTime toUTC(Date date)

Since:
  5.2

#### parseDate

    public static Instant parseDate(String dateValue,
                                    DateTimeFormatter... dateFormatters)

Parses the date value using the given date/time formats.

Parameters:
  `dateValue` - the instant value to parse
  `dateFormatters` - the date/time formats to use
Returns:
  the parsed instant or null if input could not be parsed
Since:
  5.2

#### parseStandardDate

    public static Instant parseStandardDate(String dateValue)

Parses the instant value using the standard date/time formats (`PATTERN_RFC1123`, `PATTERN_RFC1036`, `PATTERN_ASCTIME`).

Parameters:
  `dateValue` - the instant value to parse
Returns:
  the parsed instant or null if input could not be parsed
Since:
  5.2

#### parseStandardDate

    public static Instant parseStandardDate(org.apache.hc.core5.http.MessageHeaders headers,
                                            String headerName)

Parses an instant value from a header with the given name.

Parameters:
  `headers` - message headers
  `headerName` - header name
Returns:
  the parsed instant or null if input could not be parsed
Since:
  5.2

#### formatStandardDate

    public static String formatStandardDate(Instant instant)

Formats the given instant according to the RFC 1123 pattern.

Parameters:
  `instant` - Instant to format.
Returns:
  An RFC 1123 formatted instant string.
Since:
  5.2
See Also:
  `PATTERN_RFC1123`

#### formatDate

    public static String formatDate(Instant instant,
                                    DateTimeFormatter dateTimeFormatter)

Formats the given date according to the specified pattern.

Parameters:
  `instant` - Instant to format.
  `dateTimeFormatter` - The pattern to use for formatting the instant.
Returns:
  A formatted instant string.
Throws:
  `IllegalArgumentException` - If the given date pattern is invalid.
Since:
  5.2

#### parseDate

    @Deprecated
    public static Date parseDate(String dateValue)

Deprecated. Use `parseStandardDate(String)`
Parses a date value. The formats used for parsing the date value are retrieved from the default http params.

Parameters:
  `dateValue` - the date value to parse
Returns:
  the parsed date or null if input could not be parsed

#### parseDate

    @Deprecated
    public static Date parseDate(org.apache.hc.core5.http.MessageHeaders headers,
                                             String headerName)

Deprecated. Use `parseStandardDate(MessageHeaders, String)`
Parses a date value from a header with the given name.

Parameters:
  `headers` - message headers
  `headerName` - header name
Returns:
  the parsed date or null if input could not be parsed
Since:
  5.0

#### isAfter

    @Deprecated
    public static boolean isAfter(org.apache.hc.core5.http.MessageHeaders message1,
                                              org.apache.hc.core5.http.MessageHeaders message2,
                                              String headerName)

Deprecated. This method is no longer supported as a part of the public API.
Tests if the first message is after (newer) than second one using the given message header for comparison.

Parameters:
  `message1` - the first message
  `message2` - the second message
  `headerName` - header name
Returns:
  `true` if both messages contain a header with the given name and the value of the header from the first message is newer that of the second message.
Since:
  5.0

#### isBefore

    @Deprecated
    public static boolean isBefore(org.apache.hc.core5.http.MessageHeaders message1,
                                               org.apache.hc.core5.http.MessageHeaders message2,
                                               String headerName)

Deprecated. This method is no longer supported as a part of the public API.
Tests if the first message is before (older) than the second one using the given message header for comparison.

Parameters:
  `message1` - the first message
  `message2` - the second message
  `headerName` - header name
Returns:
  `true` if both messages contain a header with the given name and the value of the header from the first message is older that of the second message.
Since:
  5.0

#### parseDate

    @Deprecated
    public static Date parseDate(String dateValue,
                                             String[] dateFormats)

Deprecated. Use `parseDate(String, DateTimeFormatter...)`
Parses the date value using the given date/time formats.

Parameters:
  `dateValue` - the date value to parse
  `dateFormats` - the date/time formats to use
Returns:
  the parsed date or null if input could not be parsed

#### parseDate

    @Deprecated
    public static Date parseDate(String dateValue,
                                             String[] dateFormats,
                                             Date startDate)

Deprecated. Use `parseDate(String, DateTimeFormatter...)`
Parses the date value using the given date/time formats.

Parameters:
  `dateValue` - the date value to parse
  `dateFormats` - the date/time formats to use
  `startDate` - During parsing, two digit years will be placed in the range `startDate` to `startDate + 100 years`. This value may be `null`. When `null` is given as a parameter, year `2000` will be used.
Returns:
  the parsed date or null if input could not be parsed

#### formatDate

    @Deprecated
    public static String formatDate(Date date)

Deprecated. Use `formatStandardDate(Instant)`
Formats the given date according to the RFC 1123 pattern.

Parameters:
  `date` - The date to format.
Returns:
  An RFC 1123 formatted date string.
See Also:
  `PATTERN_RFC1123`

#### formatDate

    @Deprecated
    public static String formatDate(Date date,
                                                String pattern)

Deprecated. Use `formatDate(Instant, DateTimeFormatter)`
Formats the given date according to the specified pattern.

Parameters:
  `date` - The date to format.
  `pattern` - The pattern to use for formatting the date.
Returns:
  A formatted date string.
Throws:
  `IllegalArgumentException` - If the given date pattern is invalid.

#### clearThreadLocal

    @Deprecated
    public static void clearThreadLocal()

Deprecated. Noop method. Do not use.
Clears thread-local variable containing `DateFormat` cache.

Since:
  4.3