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
    Modifier and Type | Field and Description
    --- | ---
    `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 RFC 1123 format.
    `static TimeZone` | `GMT` Deprecated. This attribute is no longer supported as a part of the public API.
    `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.
    `static DateTimeFormatter[]` | `STANDARD_PATTERNS` Standard date formatters: `FORMATTER_RFC1123`, `FORMATTER_RFC1036`, `FORMATTER_ASCTIME`.

  - ### Method Summary

    All Methods Static Methods Concrete Methods Deprecated Methods
    Modifier and Type | Method and Description
    --- | ---
    `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(MessageHeaders message1, MessageHeaders message2, String headerName)` Deprecated. This method is no longer supported as a part of the public API.
    `static boolean` | `isBefore(MessageHeaders message1, MessageHeaders message2, String headerName)` Deprecated. This method is no longer supported as a part of the public API.
    `static Date` | `parseDate(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(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

          public static final String PATTERN_RFC1123

      Date format pattern used to parse HTTP date headers in RFC 1123 format.
      See Also:
        Constant Field Values

    - #### FORMATTER_RFC1123

          public static final DateTimeFormatter FORMATTER_RFC1123

      Date formatter used to parse HTTP date headers in RFC 1123 format.
      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(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(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(MessageHeaders message1,
                                                    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(MessageHeaders message1,
                                                     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

Copyright © 1999–2021 The Apache Software Foundation. All rights reserved.