分类: C/C++
2007-12-12 16:07:11
Calendar time is represented as a number of seconds. This is convenient for calculation, but has no resemblance to the way people normally represent dates and times. By contrast, broken-down time is a binary representation separated into year, month, day, and so on. Broken down time values are not useful for calculations, but they are useful for printing human readable time.
A broken-down time value is always relative to a choice of local time zone, and it also indicates which time zone was used.
The symbols in this section are declared in the header file `time.h'.
int tm_sec
0
to 59
. (The actual upper limit is 61
, to allow for ``leap seconds''.)
int tm_min
0
to 59
.
int tm_hour
0
to 23
.
int tm_mday
1
to 31
.
int tm_mon
0
to 11
.
int tm_year
1900
.
int tm_wday
0
to 6
.
int tm_yday
0
to 365
.
int tm_isdst
long int tm_gmtoff
timezone
(see ). You can also think of this as the ``number of seconds west'' of GMT. The tm_gmtoff
field is a GNU library extension.
const char *tm_zone
localtime
function converts the calendar time pointed to by time to broken-down time representation, expressed relative to the user's specified time zone.
The return value is a pointer to a static broken-down time structure, which might be overwritten by subsequent calls to any of the date and time functions. (But no other library function overwrites the contents of this object.)
Calling localtime
has one other effect: it sets the variable tzname
with information about the current time zone. See .
localtime
, except that the broken-down time is expressed as Coordinated Universal Time (UTC)---that is, as Greenwich Mean Time (GMT) rather than relative to the local time zone.
Recall that calendar times are always expressed in coordinated universal time.
mktime
function is used to convert a broken-down time structure to a calendar time representation. It also ``normalizes'' the contents of the broken-down time structure, by filling in the day of week and day of year based on the other date and time components.
The mktime
function ignores the specified contents of the tm_wday
and tm_yday
members of the broken-down time structure. It uses the values of the other components to compute the calendar time; it's permissible for these components to have unnormalized values outside of their normal ranges. The last thing that mktime
does is adjust the components of the brokentime structure (including the tm_wday
and tm_yday
).
If the specified broken-down time cannot be represented as a calendar time, mktime
returns a value of (time_t)(-1)
and does not modify the contents of brokentime.
Calling mktime
also sets the variable tzname
with information about the current time zone.See .