Frage

Ist Unix speichert den Versatz der Maschine von GMT intern? wie zum Beispiel: Indien Standardzeit ist GMT + 5: 30.is diesen 5.30 gespeichert, wo einige

?

Ich brauche diese es in einem Skript zu verwenden, wie unten

if[[ off is "some value"]]
then
some statements
fi
War es hilfreich?

Lösung

Das folgende Programm druckt '-04: 00' für mich in EDT und druckt '04: 30' , wenn ich gesetzt TZ zu 'Asia / Kolkata':

#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;
}

Fühlen Sie sich frei zu verwenden / ändern, was Sie wollen und nennen es dann von der Shell-Skript.

Andere Tipps

Traditionell in UNIX, hält der Kernel die aktuelle Zeit in einer Zeitzone unabhängige Form, die, was es berichtet Anwendungen ist.

Anwendungen konsultieren Umgebungsvariablen und / oder Benutzerkonfiguration (die für verschiedene Benutzer oder verschiedene Sitzungen für einen Benutzer unterschiedlich sein kann), um zu bestimmen, welche Zeitzone in die Zeit zu berichten. Zu diesem Zweck gibt es Tabellen auf der Platte gehalten, die halten die Offsets aller Zeitzonen, die das System kennt (diese Tabellen müssen für politische Veränderungen auf die Sommerzeit-Algorithmen kontinuierlich aktualisiert werden).

Der Kernel hält GMT-Zeit intern, und wenn für die lokale Zeit berechnet die Offset unter Verwendung der Zeitzone gefragt. Auf diese Weise, wenn eine Zeitzone Änderung erforderlich ist, intern, ist die Uhr nicht ändern müssen.

Im Kern oder einen Treiber, Nr.

Normalerweise ist es in einer Datei namens / etc / localtime gespeichert. Diese Datei ist oft ein Link zu einer Datei an anderer Stelle, die (in komprimierter Form) enthält alle „Regeln“ für GMT auf die Ortszeit konvertieren, einschließlich, wenn die Sommerzeit beginnt und endet, den Offset von GMT und so weiter.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top