Class DateFormatter

java.lang.Object
io.netty.handler.codec.DateFormatter

public final class DateFormatter extends java.lang.Object
A formatter for HTTP header dates, such as "Expires" and "Date" headers, or "expires" field in "Set-Cookie". On the parsing side, it honors RFC6265 (so it supports RFC1123). Note that:
  • Day of week is ignored and not validated
  • Timezone is ignored, as RFC6265 assumes UTC
If you're looking for a date format that validates day of week, or supports other timezones, consider using java.util.DateTimeFormatter.RFC_1123_DATE_TIME. On the formatting side, it uses a subset of RFC1123 (2 digit day-of-month and 4 digit year) as per RFC2616. This subset supports RFC6265.
See Also:
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    private final java.util.GregorianCalendar
     
    private static final java.lang.String[]
     
    private static final java.lang.String[]
     
    private int
     
    private boolean
     
    private static final java.util.BitSet
     
    private int
     
    private static final FastThreadLocal<DateFormatter>
     
    private int
     
    private int
     
    private boolean
     
    private final java.lang.StringBuilder
     
    private int
     
    private boolean
     
    private int
     
    private boolean
     
  • Constructor Summary

    Constructors
    Modifier
    Constructor
    Description
    private
     
  • Method Summary

    Modifier and Type
    Method
    Description
    static java.lang.StringBuilder
    append(java.util.Date date, java.lang.StringBuilder sb)
    Append a Date to a StringBuilder into RFC1123 format
    private java.lang.StringBuilder
    append0(java.util.Date date, java.lang.StringBuilder sb)
     
    private static java.lang.StringBuilder
    appendZeroLeftPadded(int value, java.lang.StringBuilder sb)
     
    private java.util.Date
     
    static java.lang.String
    format(java.util.Date date)
    Format a Date into RFC1123 format
    private java.lang.String
    format0(java.util.Date date)
     
    private static DateFormatter
     
    private static int
     
    private static boolean
    isDelim(char c)
     
    private static boolean
    isDigit(char c)
     
    private boolean
     
    private java.util.Date
    parse0(java.lang.CharSequence txt, int start, int end)
     
    private boolean
    parse1(java.lang.CharSequence txt, int start, int end)
     
    static java.util.Date
    parseHttpDate(java.lang.CharSequence txt)
    Parse some text into a Date, according to RFC6265
    static java.util.Date
    parseHttpDate(java.lang.CharSequence txt, int start, int end)
    Parse some text into a Date, according to RFC6265
    private boolean
    parseToken(java.lang.CharSequence txt, int tokenStart, int tokenEnd)
     
    void
     
    private boolean
    tryParseDayOfMonth(java.lang.CharSequence txt, int tokenStart, int tokenEnd)
     
    private boolean
    tryParseMonth(java.lang.CharSequence txt, int tokenStart, int tokenEnd)
     
    private boolean
    tryParseTime(java.lang.CharSequence txt, int tokenStart, int tokenEnd)
     
    private boolean
    tryParseYear(java.lang.CharSequence txt, int tokenStart, int tokenEnd)
     

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • DELIMITERS

      private static final java.util.BitSet DELIMITERS
    • DAY_OF_WEEK_TO_SHORT_NAME

      private static final java.lang.String[] DAY_OF_WEEK_TO_SHORT_NAME
    • CALENDAR_MONTH_TO_SHORT_NAME

      private static final java.lang.String[] CALENDAR_MONTH_TO_SHORT_NAME
    • INSTANCES

      private static final FastThreadLocal<DateFormatter> INSTANCES
    • cal

      private final java.util.GregorianCalendar cal
    • sb

      private final java.lang.StringBuilder sb
    • timeFound

      private boolean timeFound
    • hours

      private int hours
    • minutes

      private int minutes
    • seconds

      private int seconds
    • dayOfMonthFound

      private boolean dayOfMonthFound
    • dayOfMonth

      private int dayOfMonth
    • monthFound

      private boolean monthFound
    • month

      private int month
    • yearFound

      private boolean yearFound
    • year

      private int year
  • Constructor Details

    • DateFormatter

      private DateFormatter()
  • Method Details

    • parseHttpDate

      public static java.util.Date parseHttpDate(java.lang.CharSequence txt)
      Parse some text into a Date, according to RFC6265
      Parameters:
      txt - text to parse
      Returns:
      a Date, or null if text couldn't be parsed
    • parseHttpDate

      public static java.util.Date parseHttpDate(java.lang.CharSequence txt, int start, int end)
      Parse some text into a Date, according to RFC6265
      Parameters:
      txt - text to parse
      start - the start index inside txt
      end - the end index inside txt
      Returns:
      a Date, or null if text couldn't be parsed
    • format

      public static java.lang.String format(java.util.Date date)
      Format a Date into RFC1123 format
      Parameters:
      date - the date to format
      Returns:
      a RFC1123 string
    • append

      public static java.lang.StringBuilder append(java.util.Date date, java.lang.StringBuilder sb)
      Append a Date to a StringBuilder into RFC1123 format
      Parameters:
      date - the date to format
      sb - the StringBuilder
      Returns:
      the same StringBuilder
    • formatter

      private static DateFormatter formatter()
    • isDelim

      private static boolean isDelim(char c)
    • isDigit

      private static boolean isDigit(char c)
    • getNumericalValue

      private static int getNumericalValue(char c)
    • reset

      public void reset()
    • tryParseTime

      private boolean tryParseTime(java.lang.CharSequence txt, int tokenStart, int tokenEnd)
    • tryParseDayOfMonth

      private boolean tryParseDayOfMonth(java.lang.CharSequence txt, int tokenStart, int tokenEnd)
    • tryParseMonth

      private boolean tryParseMonth(java.lang.CharSequence txt, int tokenStart, int tokenEnd)
    • tryParseYear

      private boolean tryParseYear(java.lang.CharSequence txt, int tokenStart, int tokenEnd)
    • parseToken

      private boolean parseToken(java.lang.CharSequence txt, int tokenStart, int tokenEnd)
    • parse0

      private java.util.Date parse0(java.lang.CharSequence txt, int start, int end)
    • parse1

      private boolean parse1(java.lang.CharSequence txt, int start, int end)
    • normalizeAndValidate

      private boolean normalizeAndValidate()
    • computeDate

      private java.util.Date computeDate()
    • format0

      private java.lang.String format0(java.util.Date date)
    • append0

      private java.lang.StringBuilder append0(java.util.Date date, java.lang.StringBuilder sb)
    • appendZeroLeftPadded

      private static java.lang.StringBuilder appendZeroLeftPadded(int value, java.lang.StringBuilder sb)