2009-10-25 15 views
5

Rappresento le date utilizzando secondi (e microsecondi) dal 1970 oltre a un fuso orario e un flag dst. Voglio stampare una rappresentazione della data usando strftime, ma usa il valore globale per il fuso orario (extern long time time) che viene prelevato dall'ambiente. Come posso stampare la zona che preferisco per stampare?Come posso impostare il fuso orario prima di chiamare strftime?

risposta

6

Il seguente programma imposta la variabile di ambiente UNIX TZ con il fuso orario richiesto e quindi stampa un tempo formattato utilizzando strftime.

Nell'esempio seguente, il fuso orario è impostato sul fuso orario Pacifico USA.

#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

Modificare il fuso orario tramite l'impostazione della variabile globale timezone e utilizzare localtime per ottenere l'ora di stampa tramite strftime.

Problemi correlati