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

FreeBSD Manual Pages

  
 
  

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

NAME
     parsedate - convert time and date string to number

SYNOPSIS
     #include <sys/types.h>

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

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

DESCRIPTION
     Parsedate	converts many common time specifications into the number of sec-
     onds 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  GetTimeInfo  in
     libinn(3) is used to obtain the current time and timezone.

     The character string consists of zero or more specifications of the follow-
     ing 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  in-
	    terpreted 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 monthname [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 specifica-
     tions are used.  If a date or day is specified, and no absolute or relative
     time is given, midnight is used.  Finally, a correction 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.

BUGS
     Parsedate does not accept all desirable and unambiguous constructions.  Se-
     mantically 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.

HISTORY
     Originally written by Steven M. Bellovin  <smb@research.att.com>  while  at
     the  University  of North Carolina at Chapel Hill and distributed under the
     name getdate.

     A major overhaul was done by  Rich  $alz  <rsalz@bbn.com>	and  Jim  Berets
     <jberets@bbn.com> in August, 1990.

     It  was  further revised (primarily to remove obsolete constructs and time-
     zone names) a year later by Rich (now  <rsalz@osf.org>)  for  InterNetNews,
     and the name was changed.	This is revision 1.10, dated 1993/01/29.

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

								    PARSEDATE(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=parsedate&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help