DAYTIME(2)                                             DAYTIME(2)

     NAME
          daytime: text, filet, gmt, local, now, string2tm, time,
          tm2epoch - time conversions

     SYNOPSIS
          include "daytime.m";
          daytime := load Daytime Daytime->PATH;

          Tm: adt
          {
              sec:    int;    # seconds (0 to 59)
              min:    int;    # minutes (0 to 59)
              hour:   int;    # hours (0 to 23)
              mday:   int;    # day of the month (1 to 31)
              mon:    int;    # month (0 to 11)
              year:   int;    # year-1900; 2000AD is 100
              wday:   int;    # day of week (0 to 6, Sunday is 0)
              yday:   int;    # day of year (0 to 365)
              zone:   string; # time zone name
              tzoff:  int;    # time zone offset (seconds from GMT)
          };

          text:      fn(tm: ref Tm): string;
          filet:     fn(now, t: int): string;
          gmt:       fn(tim: int): ref Tm;
          local:     fn(tim: int): ref Tm;
          now:       fn(): int;
          time:      fn(): string;
          tm2epoch:  fn(tm: ref Tm): int;
          string2tm: fn(date: string): ref Tm;

     DESCRIPTION
          These routines perform time conversions relative to the
          epoch 00:00:00 GMT, Jan. 1, 1970.  Note the range of values
          for each member of the Tm adt.  The conventions are the same
          as those of C's ctime.

          Text converts a time structure referenced by tm from local
          or GMT time to a string in the format:

               Sat Jan  1 13:00:00 GMT 2000

          Filet converts the file access or modification time t from
          seconds since the epoch to local time as a string in the
          format:

               Jan  1 13:00

          if the file is less than 6 months old or

     Page 1                       Plan 9             (printed 3/29/24)

     DAYTIME(2)                                             DAYTIME(2)

               Jan  1 2000

          if the file is older than 6 months, compared to the time
          now.

          Gmt converts seconds since the epoch, received in tim, to a
          time structure in Greenwich Mean Time (GMT).

          Local converts seconds since the epoch, received in tim, to
          a time structure in local time.

          Now returns the time in seconds since the epoch, obtained by
          reading /dev/time (see cons(3)).

          Time converts seconds since the epoch to the local time as a
          string in the format Fri May 19 17:01:36 BST 2000.

          Tm2epoch converts a time structure referenced by tm from
          local or GMT time to seconds since the epoch.

          String2tm returns a reference to a Tm value corresponding to
          the date and time in textual form in string s, which must
          have one of the forms below:

               Sun, 06 Nov 1994 08:49:37 GMT    (RFC822, RFC1123)
               Sunday, 06-Nov-94 08:49:37 GMT   (RFC850)
               Sun Nov  6 08:49:37 GMT 1994     (output of text, above)

          A missing time zone in any format is assumed to be GMT.
          String2tm returns nil if s is not correctly formed.

          When local time is first requested, daytime reads a table
          for time zone conversion from the timezone environment vari-
          able, if that is set, and otherwise from the file
          /locale/timezone, which is copied from one of the other
          files in /locale when the system is installed.  The timezone
          table is a text file containing lines of space-separated
          fields.  The first line gives the normal time zone name and
          its difference from GMT in seconds followed by an alterna-
          tive time zone name (eg, for `daylight savings' or `summer'
          time) and its difference from GMT followed by a newline.
          The remainder is a list of pairs of times (seconds past the
          start of 1970, in the first time zone) when the alternative
          time zone applies.  For example:

               EST -18000 EDT -14400
                9943200 25664400 41392800 57718800 ...

          Greenwich Mean Time is represented by

               GMT 0

     Page 2                       Plan 9             (printed 3/29/24)

     DAYTIME(2)                                             DAYTIME(2)

     SOURCE
          /appl/lib/daytime.b

     SEE ALSO
          cons(3), sys-millisec(2)

     BUGS
          The sign bit of a Limbo integer holding a time will turn on
          68 years from the epoch.

     Page 3                       Plan 9             (printed 3/29/24)