Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
PARSEDATE(3)		   Library Functions Manual		  PARSEDATE(3)

       parsedate - convert time	and date string	to number

       #include	<sys/types.h>

       typedef struct _TIMEINFO	{
	   time_t	    time;
	   long		    usec;
	   long		    tzone;
       } TIMEINFO;

       parsedate(text, now)
	   char		    *text;
	   TIMEINFO	    *now;

       Parsedate  converts  many common	time specifications into the number of
       seconds since the epoch -- i.e.,	a time_t; see time(2).

       Parsedate returns the time, or -1 on error.  Text is a character	string
       containing the time and date.  Now is a pointer to the time that	should
       be used for calculating relative	dates.	If now is NULL,	then  GetTime-
       Info in libinn(3) is used to obtain the current time and	timezone.

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

       time   A	time of	day, which is  of  the	form  hh[:mm[:ss]]  [meridian]
	      [zone]  or hhmm [meridian] [zone].  If no	meridian is specified,
	      hh is interpreted	on a 24-hour clock.

       date   A	specific month and day with  optional  year.   The  acceptable
	      formats  are mm/dd[/yy], yyyy/mm/dd, monthname dd[, yy], dd mon-
	      thname [yy], and day, dd monthname yy.  The default year is  the
	      current  year.  If the year is less then 100, then 1900 is added
	      to it; if	it is less then	21, then 2000 is added to it.

       relative	time
	      A	specification relative to the current  time.   The  format  is
	      number  unit; acceptable units are year, month, week, day, hour,
	      minute (or min), and second (or sec).  The unit can be specified
	      as a singular or plural, as in 3 weeks.

       The actual date is calculated according to the following	steps.	First,
       any absolute date and/or	time is	processed and converted.   Using  that
       time as the base, day-of-week specifications are	added.	Next, relative
       specifications are used.	 If a date or day is specified,	and  no	 abso-
       lute  or	 relative time is given, midnight is used.  Finally, a correc-
       tion is applied so that the correct hour	of the day is  produced	 after
       allowing	for daylight savings time differences.

       Parsedate  ignores case when parsing all	words; unknown words are taken
       to be unknown timezones,	which are treated as GMT.  The	names  of  the
       months  and  days  of  the week can be abbreviated to their first three
       letters,	with optional trailing period.	Periods	 are  ignored  in  any
       timezone	or meridian values.

       Parsedate  does not accept all desirable	and unambiguous	constructions.
       Semantically incorrect dates such as ``February 31'' are	accepted.

       Daylight	savings	time is	always taken as	a  one-hour  change  which  is
       wrong  for  some	 places.  The daylight savings time correction can get
       confused	if parsing a  time  within  an	hour  of  when	the  reckoning
       changes,	or if given a partial date.

       Originally  written  by Steven M. Bellovin <> while
       at the University of North Carolina at Chapel Hill and distributed  un-
       der the name getdate.

       A  major	 overhaul was done by Rich $alz	<>	and Jim	Berets
       <> in August, 1990.

       It was further revised (primarily to  remove  obsolete  constructs  and
       timezone	 names)	 a year	later by Rich (now <>) for	Inter-
       NetNews,	and the	name  was  changed.   This  is	revision  1.10,	 dated

       date(1),	ctime(3), libinn(3), time(2).



Want to link to this manual page? Use this URL:

home | help