## javax.mail.internet
Class MailDateFormat

    java.lang.Object
      java.text.Format
          java.text.DateFormat
              java.text.SimpleDateFormat
                  javax.mail.internet.MailDateFormat

All Implemented Interfaces:
  java.io.Serializable, java.lang.Cloneable

    public class MailDateFormat

extends java.text.SimpleDateFormat

Formats and parses date specification based on the draft-ietf-drums-msg-fmt-08 dated January 26, 2000. This is a followup spec to RFC822.

This class does not take pattern strings. It always formats the date based on the specification below.

3.3 Date and Time Specification

Date and time occur in several header fields of a message. This section specifies the syntax for a full date and time specification. Though folding whitespace is permitted throughout the date-time specification, it is recommended that only a single space be used where FWS is required and no space be used where FWS is optional in the date-time specification; some older implementations may not interpret other occurrences of folding whitespace correctly.

date-time = [ day-of-week "," ] date FWS time [CFWS]

day-of-week = ([FWS] day-name) / obs-day-of-week

day-name = "Mon" / "Tue" / "Wed" / "Thu" / "Fri" / "Sat" / "Sun"

date = day month year

year = 4*DIGIT / obs-year

month = (FWS month-name FWS) / obs-month

    month-name = "Jan" / "Feb" / "Mar" / "Apr" /
                 "May" / "Jun" / "Jul" / "Aug" /
                 "Sep" / "Oct" / "Nov" / "Dec"

day = ([FWS] 1*2DIGIT) / obs-day

time = time-of-day FWS zone

time-of-day = hour ":" minute [ ":" second ]

hour = 2DIGIT / obs-hour

minute = 2DIGIT / obs-minute

second = 2DIGIT / obs-second

zone = (( "+" / "-" ) 4DIGIT) / obs-zone

The day is the numeric day of the month. The year is any numeric year in the common era.

The time-of-day specifies the number of hours, minutes, and optionally seconds since midnight of the date indicated.

The date and time-of-day SHOULD express local time.

The zone specifies the offset from Coordinated Universal Time (UTC, formerly referred to as "Greenwich Mean Time") that the date and time-of-day represent. The "+" or "-" indicates whether the time-of-day is ahead of or behind Universal Time. The first two digits indicate the number of hours difference from Universal Time, and the last two digits indicate the number of minutes difference from Universal Time. (Hence, +hhmm means +(hh * 60 + mm) minutes, and -hhmm means -(hh * 60 + mm) minutes). The form "+0000" SHOULD be used to indicate a time zone at Universal Time. Though "-0000" also indicates Universal Time, it is used to indicate that the time was generated on a system that may be in a local time zone other than Universal Time.

A date-time specification MUST be semantically valid. That is, the day-of-the week (if included) MUST be the day implied by the date, the numeric day-of-month MUST be between 1 and the number of days allowed for the specified month (in the specified year), the time-of-day MUST be in the range 00:00:00 through 23:59:60 (the number of seconds allowing for a leap second; see [STD-12]), and the zone MUST be within the range -9959 through +9959.

Since:
  JavaMail 1.2
See Also:
  Serialized Form

Nested Class Summary

Nested classes/interfaces inherited from class java.text.DateFormat
`java.text.DateFormat.Field`

Field Summary

Fields inherited from class java.text.DateFormat
`AM_PM_FIELD, calendar, DATE_FIELD, DAY_OF_WEEK_FIELD, DAY_OF_WEEK_IN_MONTH_FIELD, DAY_OF_YEAR_FIELD, DEFAULT, ERA_FIELD, FULL, HOUR_OF_DAY0_FIELD, HOUR_OF_DAY1_FIELD, HOUR0_FIELD, HOUR1_FIELD, LONG, MEDIUM, MILLISECOND_FIELD, MINUTE_FIELD, MONTH_FIELD, numberFormat, SECOND_FIELD, SHORT, TIMEZONE_FIELD, WEEK_OF_MONTH_FIELD, WEEK_OF_YEAR_FIELD, YEAR_FIELD`

Constructor Summary
`MailDateFormat()`

Method Summary
`java.lang.StringBuffer` `format(java.util.Date date, java.lang.StringBuffer dateStrBuf, java.text.FieldPosition fieldPosition)` Formats the given date in the format specified by draft-ietf-drums-msg-fmt-08 in the current TimeZone.
`java.util.Date` `parse(java.lang.String text, java.text.ParsePosition pos)` Parses the given date in the format specified by draft-ietf-drums-msg-fmt-08 in the current TimeZone.
`void` `setCalendar(java.util.Calendar newCalendar)` Don't allow setting the calendar
`void` `setNumberFormat(java.text.NumberFormat newNumberFormat)` Don't allow setting the NumberFormat

Methods inherited from class java.text.SimpleDateFormat
`applyLocalizedPattern, applyPattern, clone, equals, formatToCharacterIterator, get2DigitYearStart, getDateFormatSymbols, hashCode, set2DigitYearStart, setDateFormatSymbols, toLocalizedPattern, toPattern`

Methods inherited from class java.text.DateFormat
`format, format, getAvailableLocales, getCalendar, getDateInstance, getDateInstance, getDateInstance, getDateTimeInstance, getDateTimeInstance, getDateTimeInstance, getInstance, getNumberFormat, getTimeInstance, getTimeInstance, getTimeInstance, getTimeZone, isLenient, parse, parseObject, setLenient, setTimeZone`

Methods inherited from class java.text.Format
`format, parseObject`

Methods inherited from class java.lang.Object
`finalize, getClass, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### MailDateFormat

    public MailDateFormat()

Method Detail

### format

    public java.lang.StringBuffer format(java.util.Date date,
                                         java.lang.StringBuffer dateStrBuf,
                                         java.text.FieldPosition fieldPosition)

  Formats the given date in the format specified by draft-ietf-drums-msg-fmt-08 in the current TimeZone.

  Overrides:
    `format` in class `java.text.SimpleDateFormat`
  Parameters:
    `date` - the Date object
    `dateStrBuf` - the formatted string
    `fieldPosition` - the current field position
  Returns:
    StringBuffer the formatted String
  Since:
    JavaMail 1.2

### parse

    public java.util.Date parse(java.lang.String text,
                                java.text.ParsePosition pos)

  Parses the given date in the format specified by draft-ietf-drums-msg-fmt-08 in the current TimeZone.

  Overrides:
    `parse` in class `java.text.SimpleDateFormat`
  Parameters:
    `text` - the formatted date to be parsed
    `pos` - the current parse position
  Returns:
    Date the parsed date in a Date object
  Since:
    JavaMail 1.2

### setCalendar

    public void setCalendar(java.util.Calendar newCalendar)

  Don't allow setting the calendar

  Overrides:
    `setCalendar` in class `java.text.DateFormat`

### setNumberFormat

    public void setNumberFormat(java.text.NumberFormat newNumberFormat)

  Don't allow setting the NumberFormat

  Overrides:
    `setNumberFormat` in class `java.text.DateFormat`