Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ getdate(3) — Amiga System V Release 4 Version 1.1

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

ctime(3)

time(2)



GETDATE(3)             C LIBRARY FUNCTIONS             GETDATE(3)



NAME
     getdate - convert time and date from ASCII

SYNOPSIS
     #include <sys/types.h>
     #include <sys/timeb.h>

     timet getdate(buf, now)
     char *buf;
     struct timeb *now;

DESCRIPTION
     Getdate is a routine that converts most common time specifi-
     cations  to standard UNIX format.  The first argument is the
     character string containing the time and date; the second is
     the assumed current time (used for relative specifications);
     if NULL is passed, ftime(3C) is used to obtain  the  current
     time and timezone.

     The character string consists of 0 or more specifications of
     the following form:

     tod    A tod is  a  time  of  day,  which  is  of  the  form
            hh[:mm[:ss]]  (or  hhmm)  [meridian]  [zone].   If no
            meridian - am or pm - is specified, a  24-hour  clock
            is  used.  A tod may be specified as just hh followed
            by a meridian.

     date   A date is a specific month and day,  and  possibly  a
            year.   Acceptable  formats are mm/dd[/yy] and month-
            name dd[, yy] If omitted, the year  defaults  to  the
            current year; if a year is specified as a number less
            than 100, 1900 is added.  If a number not followed by
            a day or relative time unit occurs, it will be inter-
            preted as a year if a tod,  monthname,  and  dd  have
            already been specified; otherwise, it will be treated
            as a tod.  This rule allows the output  from  date(1)
            or ctime(3) to be passed as input to getdate.

     day    A day of the week may be specified; the  current  day
            will  be  used if appropriate.  A day may be preceded
            by a number, indicating which instance of that day is
            desired; the default is 1.  Negative numbers indicate
            times past.   Some  symbolic  numbers  are  accepted:
            last,  next,  and  the ordinals first through twelfth
            (second is ambiguous, and is not accepted as an ordi-
            nal  number).  The symbolic number next is equivalent
            to 2; thus, next monday refers not to the immediately
            coming Monday, but to the one a week later.

     relative time
            Specifications relative to the current time are  also



Version B 2.11      Last change: May 26, 1986                   1





GETDATE(3)             C LIBRARY FUNCTIONS             GETDATE(3)



            accepted.  The  format  is  [number] unit; acceptable
            units are year, month, fortnight,  week,  day,  hour,
            minute, and second.

     The actual date is formed as follows:  first,  any  absolute
     date  and/or  time  is  processed and converted.  Using that
     time as the  base,  day-of-week  specifications  are  added;
     last, relative specifications are used.  If a date or day is
     specified, and no absolute or relative time is  given,  mid-
     night is used.  Finally, a correction is applied so that the
     correct hour of the day is produced after allowing for  day-
     light savings time differences.

     Getdate accepts most common abbreviations for days,  months,
     etc.;  in  particular,  it will recognize them with upper or
     lower case first letter,  and  will  recognize  three-letter
     abbreviations  for  any  of them, with or without a trailing
     period.  Units, such as  weeks,  may  be  specified  in  the
     singular  or plural.  Timezone and meridian values may be in
     upper or lower case, and with or without periods.

SEE ALSO
     ctime(3), time(2)

AUTHOR
     Steven M. Bellovin (unc!smb)
     Dept. of Computer Science
     University of North Carolina at Chapel Hill

BUGS
     Because yacc(1) is used to parse the date, getdate cannot be
     used a subroutine to any program that also needs yacc.
     The grammar and scanner are rather primitive; certain desir-
     able  and unambiguous constructions are not accepted.  Worse
     yet, the meaning of  some  legal  phrases  is  not  what  is
     expected; next week is identical to 2 weeks.
     The daylight savings time correction is not perfect, and can
     get confused if handed times between midnight and 2:00 am on
     the days that the reckoning changes.
     Because  localtime(2)  accepts  an  old-style  time   format
     without  zone  information,  attempting  to  pass  getdate a
     current time containing a different zone will probably fail.













Version B 2.11      Last change: May 26, 1986                   2



Typewritten Software • bear@typewritten.org • Edmonds, WA 98026