UserInfoFormat-dateTime
{Z39-50-userInfoFormat dateTime (6)} DEFINITIONS ::=
BEGIN
IMPORTS IntUnit FROM Z39-50-APDU-1995;

DateTime ::= SEQUENCE{
     date [1]  Z3950Date OPTIONAL,
     time [2]  Z3950Time OPTIONAL
                    -- one or the other, or both
          }

Z3950Date ::= SEQUENCE{
 year         [1] IMPLICIT INTEGER,
                    -- For "positive" years, i.e. 1 AD or later, supply
                    -- the absolute year, e.g. If the year is 1995, supply
                    -- the integer 1995; the value 95 would indicate the
                    -- year 0095.
                    -- For "negative" years, e.g. 1 BC or earlier, -1
                    -- represents 1 BC, -2 represents 2 BC, etc. Zero is
                    -- invalid, because there was no year zero.
 partOfYear   [2] CHOICE{ -- may be omitted if only year is significant
        monthAndDay [1]   IMPLICIT SEQUENCE{
                       month [2]  IMPLICIT INTEGER, 
                                   -- value 1-12
                       day   [3]  IMPLICIT INTEGER OPTIONAL
                                   -- may be omitted if only year and month
                                   -- are significant. Value 1-31.
                                           },
        julianDay   [2]   IMPLICIT INTEGER, -- Value 1 - 366.
        weekNumber  [3]   IMPLICIT INTEGER, -- Value 1 - 53. 
        quarter     [4] CHOICE{
                       first    [1] IMPLICIT NULL,
                       second   [2] IMPLICIT NULL,
                       third    [3] IMPLICIT NULL,
                       fourth   [4] IMPLICIT NULL},
        season      [5] CHOICE{
                       winter   [1] IMPLICIT NULL,
                       spring   [2] IMPLICIT NULL,
                       summer   [3] IMPLICIT NULL,
                       autumn   [4] IMPLICIT NULL}
                                              } OPTIONAL, 
 flags        [3] IMPLICIT SEQUENCE{
     circa          [1]   IMPLICIT NULL OPTIONAL,
                          -- if this flag is set then the date is "approximate".
     era            [2]   CHOICE{
                          -- If era occurs, partOfYear should not occur.
                          decade         [1] IMPLICIT NULL,
                                              -- year must be multiple of 10.
                                              -- For example, 1900 refers to
                                              -- the decade covering the years
                                              -- 1900 through 1909.
                          century        [2] IMPLICIT NULL,
                                              -- year must be multiple of 100.
                          millennium     [3] IMPLICIT NULL
                                              -- year must be multiple of 1000.
                                                    } OPTIONAL
                                              } OPTIONAL
                                }


Z3950Time ::= SEQUENCE{
     hour           [1] IMPLICIT INTEGER,
                             -- Value 0-23. 
     minute         [2]  IMPLICIT INTEGER OPTIONAL,
                             -- value 0-59. May be omitted when hour only is
                             -- significant (in which case second and
                             -- partOfSecond must also be omitted). 
     second         [3]  IMPLICIT INTEGER OPTIONAL,
                             -- value 0-59. May be omitted when only hour, or
                             -- hour and minute, is significant (in which case
                             -- partOfSecond must also be omitted).
     partOfSecond   [4]  IMPLICIT IntUnit OPTIONAL,
                             -- Use Unit System = 'si', Unit type = 'time'; 
                             -- Unit = 'second', with appropriate value and
                             -- scale factor.
     zone           [5]  CHOICE{
                              local      [1]  IMPLICIT NULL,
                              utc        [2]  IMPLICIT NULL,
                              utcOffset  [3]  IMPLICIT INTEGER  -- in minutes
                                                    }}             
END                              
