Home / Class/ DateFormatter Class — netty Architecture

DateFormatter Class — netty Architecture

Architecture documentation for the DateFormatter class in DateFormatter.java from the netty codebase.

Entity Profile

Dependency Diagram

graph TD
  868307e6_8dd7_9eb3_bb13_ca685c4d59cf["DateFormatter"]
  1c59d4b2_723c_1992_2d45_b7eb17387a30["DateFormatter.java"]
  868307e6_8dd7_9eb3_bb13_ca685c4d59cf -->|defined in| 1c59d4b2_723c_1992_2d45_b7eb17387a30
  c0c8c303_9c6b_ff59_6738_58d3bb356d4c["Date()"]
  868307e6_8dd7_9eb3_bb13_ca685c4d59cf -->|method| c0c8c303_9c6b_ff59_6738_58d3bb356d4c
  63f98582_6c33_610d_9c2a_2abb69d275c9["String()"]
  868307e6_8dd7_9eb3_bb13_ca685c4d59cf -->|method| 63f98582_6c33_610d_9c2a_2abb69d275c9
  d6cf78c7_2c75_11df_272a_e71eab6d3f0b["StringBuilder()"]
  868307e6_8dd7_9eb3_bb13_ca685c4d59cf -->|method| d6cf78c7_2c75_11df_272a_e71eab6d3f0b
  b5129ed8_824e_d34a_52e5_2c3380366ab0["DateFormatter()"]
  868307e6_8dd7_9eb3_bb13_ca685c4d59cf -->|method| b5129ed8_824e_d34a_52e5_2c3380366ab0
  b615a2fa_ebeb_80fc_aed3_559016f59224["isDelim()"]
  868307e6_8dd7_9eb3_bb13_ca685c4d59cf -->|method| b615a2fa_ebeb_80fc_aed3_559016f59224
  f6218a9b_85e0_505c_17e2_64f08857d3eb["isDigit()"]
  868307e6_8dd7_9eb3_bb13_ca685c4d59cf -->|method| f6218a9b_85e0_505c_17e2_64f08857d3eb
  c92994fa_0cd5_d7c9_02dd_596787c21993["getNumericalValue()"]
  868307e6_8dd7_9eb3_bb13_ca685c4d59cf -->|method| c92994fa_0cd5_d7c9_02dd_596787c21993
  afd84912_a53c_0efd_cf18_8b2ce4d9f206["reset()"]
  868307e6_8dd7_9eb3_bb13_ca685c4d59cf -->|method| afd84912_a53c_0efd_cf18_8b2ce4d9f206
  e7591c3e_834f_5798_5679_8e0c60fc675a["tryParseTime()"]
  868307e6_8dd7_9eb3_bb13_ca685c4d59cf -->|method| e7591c3e_834f_5798_5679_8e0c60fc675a
  19639dcb_526f_11c1_b138_20b90f6941ff["tryParseDayOfMonth()"]
  868307e6_8dd7_9eb3_bb13_ca685c4d59cf -->|method| 19639dcb_526f_11c1_b138_20b90f6941ff
  8401dd32_c928_b3aa_2347_021ceb7e4e79["tryParseMonth()"]
  868307e6_8dd7_9eb3_bb13_ca685c4d59cf -->|method| 8401dd32_c928_b3aa_2347_021ceb7e4e79
  666b38f7_c194_b05c_4873_e01012dd6749["tryParseYear()"]
  868307e6_8dd7_9eb3_bb13_ca685c4d59cf -->|method| 666b38f7_c194_b05c_4873_e01012dd6749
  ccbf0bfc_8853_892e_8582_30ad6041b06a["parseToken()"]
  868307e6_8dd7_9eb3_bb13_ca685c4d59cf -->|method| ccbf0bfc_8853_892e_8582_30ad6041b06a

Relationship Graph

Source Code

codec-base/src/main/java/io/netty/handler/codec/DateFormatter.java lines 48–448

public final class DateFormatter {

    private static final BitSet DELIMITERS = new BitSet();
    static {
        DELIMITERS.set(0x09);
        for (char c = 0x20; c <= 0x2F; c++) {
            DELIMITERS.set(c);
        }
        for (char c = 0x3B; c <= 0x40; c++) {
            DELIMITERS.set(c);
        }
        for (char c = 0x5B; c <= 0x60; c++) {
            DELIMITERS.set(c);
        }
        for (char c = 0x7B; c <= 0x7E; c++) {
            DELIMITERS.set(c);
        }
    }

    private static final String[] DAY_OF_WEEK_TO_SHORT_NAME =
            new String[]{"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};

    private static final String[] CALENDAR_MONTH_TO_SHORT_NAME =
            new String[]{"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};

    private static final FastThreadLocal<DateFormatter> INSTANCES =
            new FastThreadLocal<DateFormatter>() {
                @Override
                protected DateFormatter initialValue() {
                    return new DateFormatter();
                }
            };

    /**
     * Parse some text into a {@link Date}, according to RFC6265
     * @param txt text to parse
     * @return a {@link Date}, or null if text couldn't be parsed
     */
    public static Date parseHttpDate(CharSequence txt) {
        return parseHttpDate(txt, 0, txt.length());
    }

    /**
     * Parse some text into a {@link Date}, according to RFC6265
     * @param txt text to parse
     * @param start the start index inside {@code txt}
     * @param end the end index inside {@code txt}
     * @return a {@link Date}, or null if text couldn't be parsed
     */
    public static Date parseHttpDate(CharSequence txt, int start, int end) {
        int length = end - start;
        if (length == 0) {
            return null;
        } else if (length < 0) {
            throw new IllegalArgumentException("Can't have end < start");
        } else if (length > 64) {
            throw new IllegalArgumentException("Can't parse more than 64 chars, " +
                    "looks like a user error or a malformed header");
        }
        return formatter().parse0(checkNotNull(txt, "txt"), start, end);
    }

    /**
     * Format a {@link Date} into RFC1123 format
     * @param date the date to format
     * @return a RFC1123 string
     */
    public static String format(Date date) {
        return formatter().format0(checkNotNull(date, "date"));
    }

    /**
     * Append a {@link Date} to a {@link StringBuilder} into RFC1123 format
     * @param date the date to format
     * @param sb the StringBuilder
     * @return the same StringBuilder
     */
    public static StringBuilder append(Date date, StringBuilder sb) {
        return formatter().append0(checkNotNull(date, "date"), checkNotNull(sb, "sb"));
    }

Frequently Asked Questions

What is the DateFormatter class?
DateFormatter is a class in the netty codebase, defined in codec-base/src/main/java/io/netty/handler/codec/DateFormatter.java.
Where is DateFormatter defined?
DateFormatter is defined in codec-base/src/main/java/io/netty/handler/codec/DateFormatter.java at line 48.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free