2009-10-25 15 views
5

Represento las fechas usando segundos (y microsegundos) desde 1970, así como una zona horaria y un indicador dst. Quiero imprimir una representación de la fecha usando strftime, pero usa el valor global para la zona horaria (extern long int timezone) que se recoge del entorno. ¿Cómo puedo obtener tiempo para imprimir la zona de mi elección?¿Cómo puedo configurar el huso horario antes de llamar a strftime?

Respuesta

6

El siguiente programa establece la variable de entorno UNIX TZ con su zona horaria requerida y luego imprime una hora formateada utilizando strftime.

En el ejemplo siguiente, la zona horaria está configurada en Zona horaria del Pacífico de los EE. UU.

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

int main (int argc, char *argv[]) 
{ 
    struct tm *mt; 
    time_t mtt; 
    char ftime[10]; 

    setenv("TZ", "PST8PDT", 1); 
    tzset(); 
    mtt = time(NULL); 
    mt = localtime(&mtt); 
    strftime(ftime,sizeof(ftime),"%Z %H%M",mt); 

    printf("%s\n", ftime); 
} 
1

Cambiar la zona horaria a través de la configuración variable global timezone y utilizar localtime para obtener el tiempo de impresión a través de strftime.

Cuestiones relacionadas