Annotation of 43BSDReno/lib/libc/gen/ctime.3, revision 1.1.1.1

1.1       root        1: .\" Copyright (c) 1989 The Regents of the University of California.
                      2: .\" All rights reserved.
                      3: .\"
                      4: .\" This code is derived from software contributed to Berkeley by
                      5: .\" Arthur Olson.
                      6: .\"
                      7: .\" Redistribution and use in source and binary forms are permitted provided
                      8: .\" that: (1) source distributions retain this entire copyright notice and
                      9: .\" comment, and (2) distributions including binaries display the following
                     10: .\" acknowledgement:  ``This product includes software developed by the
                     11: .\" University of California, Berkeley and its contributors'' in the
                     12: .\" documentation or other materials provided with the distribution and in
                     13: .\" all advertising materials mentioning features or use of this software.
                     14: .\" Neither the name of the University nor the names of its contributors may
                     15: .\" be used to endorse or promote products derived from this software without
                     16: .\" specific prior written permission.
                     17: .\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
                     18: .\" WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
                     19: .\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
                     20: .\"
                     21: .\"    @(#)ctime.3     6.13 (Berkeley) 6/23/90
                     22: .\"
                     23: .TH CTIME 3 "June 23, 1990"
                     24: .SH NAME
                     25: asctime, ctime, difftime, gmtime, localtime, mktime, tzset, tzsetwall \- convert date and time to ASCII
                     26: .SH SYNOPSIS
                     27: .nf
                     28: .B extern char *tzname[2];
                     29: .PP
                     30: .B void tzset()
                     31: .PP
                     32: .B void tzsetwall()
                     33: .PP
                     34: .B #include <sys/types.h>
                     35: .PP
                     36: .B char *ctime(clock)
                     37: .B time_t *clock;
                     38: .PP
                     39: .B double difftime(time1, time0)
                     40: .B time_t time1;
                     41: .B time_t time0;
                     42: .PP
                     43: .B #include <time.h>
                     44: .PP
                     45: .B char *asctime(tm)
                     46: .B struct tm *tm;
                     47: .PP
                     48: .B struct tm *localtime(clock)
                     49: .B long *clock;
                     50: .PP
                     51: .B struct tm *gmtime(clock)
                     52: .B long *clock;
                     53: .PP
                     54: .B time_t mktime(tm)
                     55: .B struct tm *tm;
                     56: .fi
                     57: .SH DESCRIPTION
                     58: .I Tzset
                     59: uses the value of the environment variable
                     60: .B TZ
                     61: to set time conversion information used by
                     62: .IR localtime .
                     63: If
                     64: .B TZ
                     65: does not appear in the environment,
                     66: the best available approximation to local wall clock time, as specified
                     67: by the
                     68: .IR tzfile (5)-format
                     69: file
                     70: .B localtime
                     71: in the system time conversion information directory, is used by
                     72: .IR localtime .
                     73: If
                     74: .B TZ
                     75: appears in the environment but its value is a null string,
                     76: Coordinated Universal Time (UTC) is used (without leap second
                     77: correction).  If
                     78: .B TZ
                     79: appears in the environment and its value is not a null string:
                     80: .IP
                     81: if the value begins with a colon, it is used as a pathname of a file
                     82: from which to read the time conversion information;
                     83: .IP
                     84: if the value does not begin with a colon, it is first used as the
                     85: pathname of a file from which to read the time conversion information,
                     86: and, if that file cannot be read, is used directly as a specification of
                     87: the time conversion information.
                     88: .PP
                     89: When
                     90: .B TZ
                     91: is used as a pathname, if it begins with a slash,
                     92: it is used as an absolute pathname; otherwise,
                     93: it is used as a pathname relative to a system time conversion information
                     94: directory.
                     95: The file must be in the format specified in
                     96: .IR tzfile (5).
                     97: .PP
                     98: When
                     99: .B TZ
                    100: is used directly as a specification of the time conversion information,
                    101: it must have the following syntax (spaces inserted for clarity):
                    102: .IP
                    103: \fIstd\|offset\fR[\fIdst\fR[\fIoffset\fR][\fB,\fIrule\fR]]
                    104: .PP
                    105: Where:
                    106: .RS
                    107: .TP 15
                    108: .IR std " and " dst
                    109: Three or more bytes that are the designation for the standard
                    110: .RI ( std )
                    111: or summer
                    112: .RI ( dst )
                    113: time zone.  Only
                    114: .I std
                    115: is required; if
                    116: .I dst
                    117: is missing, then summer time does not apply in this locale.
                    118: Upper- and lowercase letters are explicitly allowed.  Any characters
                    119: except a leading colon
                    120: .RB ( : ),
                    121: digits, comma
                    122: .RB ( , ),
                    123: minus
                    124: .RB ( \(mi ),
                    125: plus
                    126: .RB ( \(pl ),
                    127: and ASCII NUL are allowed.
                    128: .TP
                    129: .I offset
                    130: Indicates the value one must add to the local time to arrive at
                    131: Coordinated Universal Time.  The
                    132: .I offset
                    133: has the form:
                    134: .RS
                    135: .IP
                    136: \fIhh\fR[\fB:\fImm\fR[\fB:\fIss\fR]]
                    137: .RE
                    138: .IP
                    139: The minutes
                    140: .RI ( mm )
                    141: and seconds
                    142: .RI ( ss )
                    143: are optional.  The hour
                    144: .RI ( hh )
                    145: is required and may be a single digit.  The
                    146: .I offset
                    147: following
                    148: .I std
                    149: is required.  If no
                    150: .I offset
                    151: follows
                    152: .IR dst ,
                    153: summer time is assumed to be one hour ahead of standard time.  One or
                    154: more digits may be used; the value is always interpreted as a decimal
                    155: number.  The hour must be between zero and 24, and the minutes (and
                    156: seconds) \(em if present \(em between zero and 59.  If preceded by a
                    157: .RB `` \(mi '',
                    158: the time zone shall be east of the Prime Meridian; otherwise it shall be
                    159: west (which may be indicated by an optional preceding
                    160: .RB `` \(pl '').
                    161: .TP
                    162: .I rule
                    163: Indicates when to change to and back from summer time.  The
                    164: .I rule
                    165: has the form:
                    166: .RS
                    167: .IP
                    168: \fIdate\fB/\fItime\fB,\fIdate\fB/\fItime\fR
                    169: .RE
                    170: .IP
                    171: where the first
                    172: .I date
                    173: describes when the change from standard to summer time occurs and the
                    174: second
                    175: .I date
                    176: describes when the change back happens.  Each
                    177: .I time
                    178: field describes when, in current local time, the change to the other
                    179: time is made.
                    180: .IP
                    181: The format of
                    182: .I date
                    183: is one of the following:
                    184: .RS
                    185: .TP 10
                    186: .BI J n
                    187: The Julian day
                    188: .I n
                    189: .RI "(1\ \(<=" "\ n\ " "\(<=\ 365).
                    190: Leap days are not counted; that is, in all years \(em including leap
                    191: years \(em February 28 is day 59 and March 1 is day 60.  It is
                    192: impossible to explicitly refer to the occasional February 29.
                    193: .TP
                    194: .I n
                    195: The zero-based Julian day
                    196: .RI "(0\ \(<=" "\ n\ " "\(<=\ 365).
                    197: Leap days are counted, and it is possible to refer to February 29.
                    198: .TP
                    199: .BI M m . n . d
                    200: The
                    201: .IR d' th
                    202: day
                    203: .RI "(0\ \(<=" "\ d\ " "\(<=\ 6)
                    204: of week
                    205: .I n
                    206: of month
                    207: .I m
                    208: of the year
                    209: .RI "(1\ \(<=" "\ n\ " "\(<=\ 5,
                    210: .RI "1\ \(<=" "\ m\ " "\(<=\ 12,
                    211: where week 5 means ``the last
                    212: .I d
                    213: day in month
                    214: .IR m ''
                    215: which may occur in either the fourth or the fifth week).  Week 1 is the
                    216: first week in which the
                    217: .IR d' th
                    218: day occurs.  Day zero is Sunday.
                    219: .RE
                    220: .IP "" 15
                    221: The
                    222: .I time
                    223: has the same format as
                    224: .I offset
                    225: except that no leading sign
                    226: .RB (`` \(mi ''
                    227: or
                    228: .RB `` \(pl '')
                    229: is allowed.  The default, if
                    230: .I time
                    231: is not given, is
                    232: .BR 02:00:00 .
                    233: .RE
                    234: .LP
                    235: If no
                    236: .I rule
                    237: is present in
                    238: .BR TZ ,
                    239: the rules specified
                    240: by the
                    241: .IR tzfile (5)-format
                    242: file
                    243: .B posixrules
                    244: in the system time conversion information directory are used, with the
                    245: standard and summer time offsets from UTC replaced by those specified by
                    246: the
                    247: .I offset
                    248: values in
                    249: .BR TZ .
                    250: .PP
                    251: For compatibility with System V Release 3.1, a semicolon
                    252: .RB ( ; )
                    253: may be used to separate the
                    254: .I rule
                    255: from the rest of the specification.
                    256: .PP
                    257: If the
                    258: .B TZ
                    259: environment variable does not specify a
                    260: .IR tzfile (5)-format
                    261: and cannot be interpreted as a direct specification,
                    262: UTC is used.
                    263: .PP
                    264: .I Tzsetwall
                    265: sets things up so that
                    266: .I localtime
                    267: returns the best available approximation of local wall clock time.
                    268: .PP
                    269: .I Ctime\^
                    270: converts a long integer, pointed to by
                    271: .IR clock ,
                    272: representing the time in seconds since
                    273: 00:00:00 UTC, January 1, 1970,
                    274: and returns a pointer to a
                    275: 26-character string
                    276: of the form
                    277: .br
                    278: .ce
                    279: .eo
                    280: Thu Nov 24 18:22:48 1986\n\0
                    281: .ec
                    282: .br
                    283: All the fields have constant width.
                    284: .PP
                    285: .IR Localtime\^
                    286: and
                    287: .I gmtime\^
                    288: return pointers to ``tm'' structures, described below.
                    289: .I Localtime\^
                    290: corrects for the time zone and any time zone adjustments
                    291: (such as Daylight Saving Time in the U.S.A.).
                    292: Before doing so,
                    293: .I localtime\^
                    294: calls
                    295: .I tzset\^
                    296: (if
                    297: .I tzset\^
                    298: has not been called in the current process).
                    299: After filling in the ``tm'' structure,
                    300: .I localtime
                    301: sets the
                    302: .BR tm_isdst 'th
                    303: element of
                    304: .B tzname
                    305: to a pointer to an 
                    306: ASCII string that's the time zone abbreviation to be used with
                    307: .IR localtime 's
                    308: return value.
                    309: .PP
                    310: .I Gmtime\^
                    311: converts to Coordinated Universal Time.
                    312: .PP
                    313: .I Asctime\^
                    314: converts a time value contained in a
                    315: ``tm'' structure to a 26-character string,
                    316: as shown in the above example,
                    317: and returns a pointer
                    318: to the string.
                    319: .PP
                    320: .I Mktime\^
                    321: converts the broken-down time,
                    322: expressed as local time,
                    323: in the structure pointed to by
                    324: .I tm
                    325: into a calendar time value with the same encoding as that of the values
                    326: returned by the
                    327: .I time
                    328: function.
                    329: The original values of the
                    330: .B tm_wday
                    331: and
                    332: .B tm_yday
                    333: components of the structure are ignored,
                    334: and the original values of the other components are not restricted
                    335: to their normal ranges.
                    336: (A positive or zero value for
                    337: .B tm_isdst
                    338: causes
                    339: .I mktime
                    340: to presume initially that summer time (for example, Daylight Saving Time 
                    341: in the U.S.A.)
                    342: respectively,
                    343: is or is not in effect for the specified time.
                    344: A negative value for
                    345: .B tm_isdst
                    346: causes the
                    347: .I mktime
                    348: function to attempt to divine whether summer time is in effect
                    349: for the specified time.)
                    350: On successful completion, the values of the
                    351: .B tm_wday
                    352: and
                    353: .B tm_yday
                    354: components of the structure are set appropriately,
                    355: and the other components are set to represent the specified calendar time,
                    356: but with their values forced to their normal ranges; the final value of
                    357: .B tm_mday
                    358: is not set until
                    359: .B tm_mon
                    360: and
                    361: .B tm_year
                    362: are determined.
                    363: .I Mktime\^
                    364: returns the specified calendar time;
                    365: If the calendar time cannot be represented,
                    366: it returns
                    367: .BR -1 .
                    368: .PP
                    369: .I Difftime\^
                    370: returns the difference between two calendar times,
                    371: .I time1
                    372: -
                    373: .IR time0,
                    374: expressed in seconds.
                    375: .PP
                    376: Declarations of all the functions and externals, and the ``tm'' structure,
                    377: are in the
                    378: .B <time.h>\^
                    379: header file.
                    380: The structure (of type)
                    381: .B struct tm
                    382: includes the following fields:
                    383: .RS
                    384: .PP
                    385: .nf
                    386: .ta .5i +\w'long tm_gmtoff;\0\0'u
                    387:        int tm_sec;     /\(** seconds (0 - 60) \(**/
                    388:        int tm_min;     /\(** minutes (0 - 59) \(**/
                    389:        int tm_hour;    /\(** hours (0 - 23) \(**/
                    390:        int tm_mday;    /\(** day of month (1 - 31) \(**/
                    391:        int tm_mon;     /\(** month of year (0 - 11) \(**/
                    392:        int tm_year;    /\(** year \- 1900 \(**/
                    393:        int tm_wday;    /\(** day of week (Sunday = 0) \(**/
                    394:        int tm_yday;    /\(** day of year (0 - 365) \(**/
                    395:        int tm_isdst;   /\(** is summer time in effect? \(**/
                    396:        char \(**tm_zone;       /\(** abbreviation of timezone name \(**/
                    397:        long tm_gmtoff; /\(** offset from UTC in seconds \(**/
                    398: .fi
                    399: .RE
                    400: .PP
                    401: The
                    402: .I tm_zone
                    403: and
                    404: .I tm_gmtoff
                    405: fields exist, and are filled in, only if arrangements to do
                    406: so were made when the library containing these functions was
                    407: created.
                    408: There is no guarantee that these fields will continue to exist
                    409: in this form in future releases of this code.
                    410: .PP
                    411: .I Tm_isdst\^
                    412: is non-zero if summer time is in effect.
                    413: .PP
                    414: .I Tm_gmtoff
                    415: is the offset (in seconds) of the time represented
                    416: from UTC, with positive values indicating east
                    417: of the Prime Meridian.
                    418: .SH FILES
                    419: .ta \w'/usr/share/zoneinfo/posixrules\0\0'u
                    420: /usr/share/zoneinfo    time zone information directory
                    421: .br
                    422: /usr/share/zoneinfo/localtime  local time zone file
                    423: .br
                    424: /usr/share/zoneinfo/posixrules used in converting POSIX-style TZ's
                    425: .br
                    426: /usr/share/zoneinfo/GMT        for UTC leap seconds
                    427: .sp
                    428: If
                    429: .I /usr/share/zoneinfo/GMT
                    430: is absent,
                    431: UTC leap seconds are loaded from
                    432: .IR /usr/share/zoneinfo/posixrules .
                    433: .SH SEE ALSO
                    434: time(2), getenv(3), tzfile(5)
                    435: .SH NOTES
                    436: The return values point to static data
                    437: whose content is overwritten by each call.
                    438: The
                    439: .B tm_zone
                    440: field of a returned
                    441: .B "struct tm"
                    442: points to a static array of characters, which
                    443: will also be overwritten at the next call
                    444: (and by calls to
                    445: .I tzset
                    446: or
                    447: .IR tzsetwall ).
                    448: .PP
                    449: Avoid using out-of-range values with
                    450: .I mktime
                    451: when setting up lunch with promptness sticklers in Riyadh.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.