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. This class handles dates as defined by RFC 2616 section 3.3.1 as well as some other common non-standard formats.

Since:
  4.3

### Field Summary

Fields
`static TimeZone` `GMT`
`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` Date format pattern used to parse HTTP date headers in RFC 1123 format.

### Method Summary

Methods
`static void` `clearThreadLocal()` Clears thread-local variable containing `DateFormat` cache.
`static String` `formatDate(Date date)` Formats the given date according to the RFC 1123 pattern.
`static String` `formatDate(Date date, String pattern)` Formats the given date according to the specified pattern.
`static boolean` `isAfter(org.apache.hc.core5.http.MessageHeaders message1, org.apache.hc.core5.http.MessageHeaders message2, String headerName)` Tests if the first message is after (newer) than second one using the given message header for comparison.
`static boolean` `isBefore(org.apache.hc.core5.http.MessageHeaders message1, org.apache.hc.core5.http.MessageHeaders message2, String headerName)` Tests if the first message is before (older) than the second one using the given message header for comparison.
`static Date` `parseDate(org.apache.hc.core5.http.MessageHeaders headers, String headerName)` Parses a date value from a header with the given name.
`static Date` `parseDate(String dateValue)` Parses a date value.
`static Date` `parseDate(String dateValue, String[] dateFormats)` Parses the date value using the given date formats.
`static Date` `parseDate(String dateValue, String[] dateFormats, Date startDate)` Parses the date value using the given date formats.

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

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

### Field Detail

#### PATTERN_RFC1123

    public static final String PATTERN_RFC1123

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

See Also:
  Constant Field Values

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

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

#### GMT

    public static final TimeZone GMT

### Method Detail

#### parseDate

    public static Date parseDate(String dateValue)

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

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

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

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

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

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

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

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

Parses the date value using the given date formats.

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

#### parseDate

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

Parses the date value using the given date formats.

Parameters:
  `dateValue` - the date value to parse
  `dateFormats` - the date 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

    public static String formatDate(Date date)

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

    public static String formatDate(Date date,
                    String pattern)

Formats the given date according to the specified pattern. The pattern must conform to that used by the `simple date format` class.

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.
See Also:
  `SimpleDateFormat`

#### clearThreadLocal

    public static void clearThreadLocal()

Clears thread-local variable containing `DateFormat` cache.

Since:
  4.3