2009-12-09 10 views
1

Unix enregistre-t-il en interne le décalage de la machine par rapport à GMT? comme par exemple: l'heure normale de l'Inde est GMT + 5: 30.est-ce 5:30 stocké où?Décalage par rapport à l'heure GMT

je en ai besoin de l'utiliser dans un script comme ci-dessous

if[[ off is "some value"]] 
then 
some statements 
fi 
+0

Oui ... et si vous posez une question * spécifique *, vous pourriez même apprendre à faire quelque chose d'utile avec! :) – hobbs

Répondre

0

Les programme suivant '-04: 00' pour moi EDT et imprime '04: 30' Quand je tournerai TZ 'Asie/Calcutta':

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

int 
main() 
{ 
    int hours; 
    int minutes; 
    int negative_sign = 1; 

    tzset(); 
    // printf ("tzname: %s tzname[1]: %s\n", tzname [0], tzname [1]); 
    // printf ("DST: %d\n", daylight); /* 0 when no DST */ 
    // printf ("timezone: %ld\n", timezone); 
    /* 'timezone' is the number of seconds west of GMT */ 
    /* It is negative for tzs east of GMT */ 
    if (timezone <= 0) { 
     timezone = -timezone; 
     negative_sign = 0; 
    } 

    if (daylight) { 
     timezone -= 3600; /* substract 1h when DST is active */ 
     if (timezone <= 0) { 
      timezone = -timezone; 
      negative_sign = 0; 
     } 
    } 
    timezone /= 60; /* convert to minutes */ 
    hours = timezone/60; 
    minutes = timezone % 60; 
    printf ("%s%02d:%02d\n", (negative_sign ? "-" : ""), hours, minutes); 
    return 0; 
} 

Ne hésitez pas à utiliser/changement tout vous voulez et ensuite l'appeler à partir de votre script shell.

0

Le noyau conserve l'heure GMT en interne, et lorsqu'on lui a demandé l'heure locale calcule le décalage en utilisant les informations de fuseau horaire. De cette façon, si un changement de fuseau horaire est requis, en interne, l'horloge n'a pas besoin d'être modifiée.

1

Traditionnellement sous UNIX, le noyau garde l'heure actuelle sous une forme indépendante de fuseau horaire, ce qui est ce qu'il rapporte aux applications. Les applications consultent les variables d'environnement et/ou la configuration de l'utilisateur (qui peut être différente pour différents utilisateurs ou différentes sessions pour un utilisateur) pour déterminer le fuseau horaire dans lequel l'heure doit être saisie. Pour cela, des tables sont conservées sur le disque. tenir les décalages de tous les fuseaux horaires que le système connaît (ces tables doivent être continuellement mises à jour pour des changements politiques aux algorithmes d'heure d'été).

0

Dans le noyau ou un pilote, non.

Habituellement, il est stocké dans un fichier appelé/etc/localtime. Ce fichier est souvent un lien vers un fichier ailleurs qui contient (sous forme compressée) toutes les "règles" pour convertir GMT en heure locale, y compris quand l'heure d'été commence et se termine, le décalage de GMT, et ainsi de suite.

+1

Il est remplaçable par la variable d'environnement 'TZ'. – ephemient

Questions connexes