Time and transaction identifier format

Time

    Time -> M-Transaction | H-Time("+" | "-") | "now" | "begining"

    A Time may either be a M-Transaction, a H-Time followed by a plus indicating the first transaction since the specified time, or a minus indicating the first transaction before the specifiied time, a now indicating the current time, or begining indicating the beginning of time.

Time-range

    Time-range -> (M-Transaction | H-Time | now | begining) <SP> (M-Transaction | H-Time | now | begining)

    A Time range consists of two times where the left most time was before the right most time.  The actual time covered is inclusive.  A H-Time includes all events that are resolvable during that time interval (limited to 1 second by the specification, but implementations may chose a corser time resolution).  Since H-Times are inclusive + and - are unnecessary and illegal.

M-Transaction

    A ->    "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "A" | "B" | "C" | "D" | "E"
               | "F" | "G" | H" | "I" | "J" | "K" | "L"| "M" | "N" | "O" | "P" | "Q" | "R" | "S" | "T"
               | "U" | "V" | "W" | "X" | "Y" | "Z" | "_"

    M-Transaction -> "m" *(A)

    Machine dependent transaction identifier code.  These codes must be issued in ascending order.  They consist of an 'm' followed by a string consisting of the following characters "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_".  The digits are ordered as stated previously from left to right (i.e. "0" < "A" < "Z" < "_").  If two strings are of different lengths the longer string is greater than the shorter string  (i.e. "" < "_" < "00").  Note that lowercase characters are illegal.  Servers should avoid M-Transactions of over 40 characters in length.

Ex:
    "m2916", "m13210", "m0008EF09", and "m00005437_04_APR_1999_12_55_PM" are valid M-Transactions.

H-Time

    Digit -> "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"
    Year -> Digit Digit Digit Digit
    Month -> "01" | "02" | "03" | "04" | "05" | "06" | "07" | "08" | "09" | "10" | "11" | "12
    Day -> "0" Digit | "1" Digit | "2" Digit | "30" | "31"
    Hour -> "0" Digit | "1" Digit | "20" | "21" | "22" | "23"
    Minute -> "0" Digit | "1" Digit | "2" Digit | "3" Digit | "4" Digit | "5" Digit
    Second -> Minute

    H-Time -> "h" Year "-" Month "-" Day "::" Hour ":" Minute ":" Second

    Human readable time format.  This format is to be used only for convince to users, clients are responsive to convert local time conventions into H-Time format.  The time component will be encoded in 24-hour UTC (Coordinated Universal Time, formerly known as GMT).  Clients may convert between this standard and local convention (MM/DD/YYYY and local time zone).  No value may be left out, and no white space is allowed.  YEAR ranges from 0000-9999 AD, MM ranges between 01-12, DD ranges between 01-31, HH ranges between 00-23, MM ranges between 00-59, and SS ranges between 00-59.  Leap seconds should be adjusted to the nearest 'common' time.

Date/time is completely relative, and no assumptions should be made concerning the accuracy of a server's clock.
 

Frequency

    Freq -> digit digit digit digit "-" digit digit "-" digit digit "::" digit digit ":" digit digit ":" digit digit

    The format for freq is similar to H-Time, but instead of referring to a specific time, it refers to the time interval between events or updates.  "0000-00-01:00:00:00" refers to daily updates, and "0000-00-00::00:00:00" refers to
instantaneous updates.  Also note the format is more lax.


Various time codes:

If-modified-since: h1993-01-01::00:00:00-
    Get if modified since the first transaction before 1993.
Last-modified: m00A6F1E7
    This object was modified last by transaction 00A6F1E7
Since: m333249
    Send informs to bring up to date since transaction 333249
Since: begin
    Send informs for a full update of all information
Since: h1990-03-10::09:31:22+
    Bring up to date since the first transaction after March 10, 1990 at 9:31 and 22 seconds GMT.
If-modified-since: now
    A test to see if a server supports if-modified-since.

Various time ranges:

Time-range: begining now
    Specifies all time.
Time-range: m00460778_01_APR_1999 now
    Specifies all transactions since m00460778_01_APR_1999.
Time-rage: h1999-01-01::00:00:00 now
    Specifies all transactions since the beginning of 1999.
Time-range: h1998-01-01::00:00:00 h1998-12-31::23:59:59
    Specifies all transactions in 1998.

Various Frequencies:

Update-Frequency: 0000-00-00::00:00:00
    Instanious updates.
Update-Frequency: 0000-00-00::01:00:00
    Hourly updates.
Update-Frequency: 0000-00-01::00:00:00
    Daily updates.
Update-Frequency: 0000-00-00::24:00:00
    Another daily update.
Update-Frequency: 0000-01-00::00:00:00
    Monthly updates.

Example- Various valid time and transaction identifiers