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