|
|
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.