|
|
1.1 root 1: .TH GETDATE 3 unc
2: .SH NAME
3: getdate \- convert time and date from ASCII
4: .SH SYNOPSIS
5: .B #include <sys/types.h>
6: .br
7: .B #include <sys/timeb.h>
8: .PP
9: .B time_t getdate(buf, now)
10: .br
11: .B char *buf;
12: .br
13: struct timeb *now;
14: .SH DESCRIPTION
15: .I Getdate
16: is a routine that converts most common time specifications to standard UNIX
17: format. The first argument is the character string containing the
18: time and date; the second is the assumed current time (used for relative
19: specifications); if
20: .B NULL
21: is passed,
22: .IR ftime (2)
23: is used to obtain the current time and timezone.
24: .PP
25: The character string consists of 0 or more specifications of the following
26: form:
27: .TP .75i
28: tod
29: A
30: .I tod
31: is a time of day, which is of the form
32: .IR hh : mm [: ss ]
33: (or
34: .IR hhmm )
35: .RI [ meridian ]
36: .RI [ zone ].
37: If no meridian \-
38: .B am
39: or
40: .B pm
41: \- is specified, a 24-hour clock is used. A
42: .I tod
43: may be specified as just
44: .I hh
45: followed by a
46: .IR meridian.
47: .TP .75i
48: date
49: A
50: .I date
51: is a specific month and day, and possibly a year. Acceptable formats are
52: .IR mm/dd [ /yy ]
53: and
54: .IR "monthname dd" "[, " yy ]
55: If omitted, the year defaults to the
56: current year; if a year is specified
57: as a number less than 100, 1900 is added.
58: If a number not followed by a day or relative time unit occurs, it will
59: be interpreted as a year if a
60: .IR tod ,
61: .IR monthname ,
62: and
63: .I dd
64: have already been specified; otherwise, it will be treated as a
65: .IR tod .
66: This rule allows the output from
67: .IR date (1)
68: or
69: .IR ctime (3)
70: to be passed as input to
71: .IR getdate .
72: .TP .75i
73: day
74: A
75: .I day
76: of the week may be specified; the current day will be used if appropriate.
77: A
78: .I day
79: may be preceeded by a
80: .IR number,
81: indicating which instance of that day is desired; the default is
82: .BR 1 .
83: Negative
84: .I numbers
85: indicate times past. Some symbolic
86: .I numbers
87: are accepted:
88: .BR last ,
89: .BR next ,
90: and the ordinals
91: .B first
92: through
93: .B twelfth
94: .RB ( second
95: is ambiguous, and is not accepted as an ordinal number).
96: The symbolic number
97: .B next
98: is equivalent to
99: .BR 2 ;
100: thus,
101: .I "next monday"
102: refers not to the immediately coming Monday, but to the one a week later.
103: .TP .75i
104: relative time
105: Specifications relative to the current time are also accepted.
106: The format is
107: .RI [ number "] " unit ;
108: acceptable units are
109: .BR year ,
110: .BR month ,
111: .BR fortnight ,
112: .BR week ,
113: .BR day ,
114: .BR hour ,
115: .BR minute ,
116: and
117: .BR second .
118: .PP
119: The actual date is formed as follows: first, any absolute date and/or time
120: is processed and converted. Using that time as the base, day-of-week
121: specifications are added; last, relative specifications are used. If a
122: date or day is specified, and no absolute or relative time is given, midnight
123: is used.
124: Finally, a correction is applied so that the correct hour of the day is
125: produced after allowing for daylight savings time differences.
126: .PP
127: .I Getdate
128: accepts most common abbreviations for days, months, etc.; in particular,
129: it will recognize them with upper or lower case first letter, and will
130: recognize three-letter abbreviations for any of them, with or without
131: a trailing period. Units, such as
132: .BR week s,
133: may be specified in the singular or plural. Timezone and meridian
134: values may be in upper or lower case, and with or without periods.
135: .SH FILES
136: /usr/lib/libu.a
137: .SH "SEE ALSO"
138: ctime(3), time(2)
139: .SH AUTHOR
140: Steven M. Bellovin (unc!smb)
141: .br
142: Dept. of Computer Science
143: .br
144: University of North Carolina at Chapel Hill
145: .SH BUGS
146: Because
147: .IR yacc (1)
148: is used to parse the date,
149: .I getdate
150: cannot be used a subroutine to any program that also needs
151: .IR yacc .
152: .br
153: The grammar and scanner are rather primitive; certain desirable and
154: unambiguous constructions are not accepted. Worse yet, the meaning of
155: some legal phrases is not what is expected;
156: .I next week
157: is identical to
158: .IR "2 weeks" .
159: .br
160: The daylight savings time correction is not perfect, and can get confused
161: if handed times between midnight and 2:00 am on the days that the
162: reckoning changes.
163: .br
164: Because
165: .IR localtime (2)
166: accepts an old-style time format without zone information, attempting
167: to pass
168: .I getdate
169: a current time containing a different zone will probably fail.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.