106 lines · 3.5 KB · Text
RawDownload
daytime: text, filet, gmt, local, now, string2tm, time, tm2epoch: time conversions     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; These routines perform time conversions relative to the epoch00:00:00  GMT,  Jan.  1,  1970.  Note the range of values foreach member of the Tm adt.  The conventions are the  same  asthose of C's ctime. Text converts a time structure referenced by tm from local orGMT time to a string in the format:        Sat Jan  1 13:00:00 GMT 2000 Filet converts the file access or modification  time  t  fromseconds since the epoch to local time as a string in the for‐mat:        Jan  1 13:00 if the file is less than 6 months old or        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  atime structure in Greenwich Mean Time (GMT). Local converts seconds since the epoch, received in tim, to atime structure in local time. Now returns the time in seconds since the epoch, obtained  byreading /dev/time (see cons(3)). Time  converts seconds since the epoch to the local time as astring in the format Fri May 19 17:01:36 BST 2000. Tm2epoch converts a time  structure  referenced  by  tm  fromlocal or GMT time to seconds since the epoch. String2tm  returns a reference to a Tm value corresponding tothe date and time in textual form in  string  s,  which  musthave 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 fortime  zone conversion from the timezone environment variable,if that is set, and otherwise from the file /locale/timezone,which  is  copied from one of the other files in /locale whenthe system is installed.  The timezone table is a  text  filecontaining  lines  of space-separated fields.  The first linegives the normal time zone name and its difference  from  GMTin seconds followed by an alternative time zone name (eg, for`daylight savings' or `summer' time) and its difference  fromGMT  followed by a newline.  The remainder is a list of pairsof times (seconds past the start of 1970, in the  first  timezone) when the alternative time zone applies.  For example:        EST -18000 EDT -14400        9943200 25664400 41392800 57718800 ... Greenwich Mean Time is represented by        GMT 0 == source/appl/lib/daytime.b == see ALSOcons(3), sys-millisec(2) == bugsThe  sign  bit of a Limbo integer holding a time will turn on68 years from the epoch.