_tzset

Sets time environment variables.

void_tzset(void);

Routine Required Header Compatibility
_tzset <time.h> Win 95, Win NT

For additional compatibility information, see Compatibility in the Introduction.

Libraries

LIBC.LIB Single thread static library, retail version
LIBCMT.LIB Multithread static library, retail version
MSVCRT.LIB Import library for MSVCRT.DLL, retail version

Return Value

None

Remarks

The _tzset function uses the current setting of the environment variable TZ to assign values to three global variables: _daylight, _timezone, and _tzname. These variables are used by the _ftime and localtime functions to make corrections from coordinated universal time (UTC) to local time, and by the time function to compute UTC from system time. Use the following syntax to set the TZ environment variable:

set TZ=tzn[+ | –]hh[**:mm[:**ss] ][dzn]

tzn

Three-letter time-zone name, such as PST. You must specify the correct offset from local time to UTC.

hh

Difference in hours between UTC and local time. Optionally signed.

mm

Minutes. Separated from hh by a colon (:).

ss

Seconds. Separated from mm by a colon (:).

dzn

Three-letter daylight-saving-time zone such as PDT. If daylight saving time is never in effect in the locality, set TZ without a value for dzn. The C run-time library assumes the United States’s rules for implementing the calculation of Daylight Saving Time (DST).

For example, to set the TZ environment variable to correspond to the current time zone in Germany, you can use one of the following statements:

set TZ=GST-1GDT
set TZ=GST+1GDT

These strings use GST to indicate German standard time, assume that Germany is one hour ahead of UTC, and assume that daylight savings time is in effect.

If the TZ value is not set, _tzset attempts to use the time zone information specified by the operating system. Under Windows NT and Windows 95, this information is specified in the Control Panel’s Date/Time application. If _tzset cannot obtain this information, it uses PST8PDT by default, which signifies the Pacific time zone.

Based on the TZ environment variable value, the following values are assigned to the global variables _daylight, _timezone, and _tzname when _tzset is called:

Global Variable Description Default Value
_daylight Nonzero value if a daylight-saving-time zone is specified in TZ setting; otherwise, 0 1
_timezone Difference in seconds between UTC and local time. 28800 (28800 seconds equals 8 hours)
_tzname[0] String value of time-zone name from TZ environmental variable; empty if TZ has not been set PST
_tzname[1] String value of daylight-saving-time zone; empty if daylight-saving-time zone is omitted from TZ environmental variable PDT

The default values shown in the preceding table for _daylight and the _tzname array correspond to “PST8PDT.” If the DST zone is omitted from the TZ environmental variable, the value of _daylight is 0 and the _ftime, gmtime, and localtime functions return 0 for their DST flags.

Example

/* TZSET.C: This program first sets up the time zone by
 * placing the variable named TZ=EST5 in the environment
 * table. It then uses _tzset to set the global variables
 * named _daylight, _timezone, and _tzname.
 */

#include <time.h>
#include <stdlib.h>
#include <stdio.h>

void main( void )
{
   if( _putenv( "TZ=EST5EDT" ) == -1 )
   {
      printf( "Unable to set TZ\n" );
      exit( 1 );
   }
   else
   {
      _tzset();
      printf( "_daylight = %d\n", _daylight );
      printf( "_timezone = %ld\n", _timezone );
      printf( "_tzname[0] = %s\n", _tzname[0] );
   }
   exit( 0 );
}

Output

_daylight = 1
_timezone = 18000
_tzname[0] = EST

Time Management Routines

See Also   asctime, _ftime, gmtime, localtime, time, _utime