ctime, localtime, gmtime, mktime, difftime, asctime oder tzset Subroutine

Zweck

Konvertiert die Formate von Datums-und Zeitdarstellungen.

Bibliothek

Standard-C-Bibliothek (libc.a)

Syntax

#include <time.h>
char *ctime ( Clock)
const time_t *Clock;
struct tm *localtime (Clock)
const time_t *Clock;
struct tm *gmtime (Clock)
const time_t *Clock;
time_t mktime( Timeptr)
struct tm *Timeptr;
double difftime( Time1,  Time0)
time_t Time0, Time1;
char *asctime ( Tm)
const struct tm *Tm;
void tzset ( )
extern long int timezone;
extern int daylight;
extern char *tzname[];

Beschreibung

Achtung: Verwenden Sie die Subroutine tzset nicht, wenn Sie sowohl mit libc.a als auch mit libbsd.averknüpfen. Die Subroutine tzset legt die globale externe Variable namens timezonefest, die mit der Subroutine timezone in libbsd.ain Konflikt steht. Diese Namenskollision kann zu unvorhersehbaren Ergebnissen führen.

Achtung: Verwenden Sie nicht ctime, localtime, gmtime, Subroutine asctime in einer Multithread-Umgebung. Siehe die Multithread-Alternativen im Artikel zur Subroutine ctime_r, localtime_r, gmtime_roder asctime_r .

Die Subroutine ctime konvertiert einen Zeitwert, auf den durch den Parameter Uhr verwiesen wird, der die Zeit in Sekunden seit 00:00:00 UTC (Coordinated Universal Time), 1. Januar 1970, in eine 26-stellige Zeichenfolge im folgenden Format darstellt:

Sun Sept 16 01:03:52 1973\n\0

Die Breite jedes Felds ist immer gleich wie hier gezeigt.

Die Subroutine ctime wird an die Zeitzone und die Sommerzeit angepasst, wenn sie wirksam ist.

Die Subroutine localtime konvertiert die lange ganze Zahl, auf die durch den Parameter Uhr verwiesen wird, die die Zeit in Sekunden seit 00:00:00 UTC am 1. Januar 1970 in eine tm -Struktur enthält. Die Subroutine localtime wird an die Zeitzone und an die Tageszeit angepasst, wenn sie wirksam ist. Verwenden Sie die Zeitzoneninformationen wie localtime mit dem Namen tzset.

Die Subroutine gmtime konvertiert die lange ganze Zahl, auf die der Parameter Uhr verweist, in eine tm -Struktur, die die koordinierte Weltzeit (Coordinated Universal Time, UTC) enthält. Dies ist der vom Betriebssystem verwendete Zeitstandard.

Hinweis: UTC ist der internationale Zeitstandard, der GMT ersetzen soll.

Die Struktur tm ist in der Datei time.h definiert und enthält die folgenden Member:

int tm_sec;     /* Seconds (0 - 59) */
int tm_min;     /* Minutes (0 - 59) */
int tm_hour;    /* Hours (0 - 23) */
int tm_mday;    /* Day of month (1 - 31) */
int tm_mon;     /* Month of year (0 - 11) */
int tm_year;    /* Year - 1900 */
int tm_wday;    /* Day of week (Sunday = 0) */
int tm_yday;    /* Day of year (0 - 365) */
int tm_isdst;   /* Nonzero = Daylight saving time */

Die Subroutine mktime ist die Umkehrfunktion der Subroutine localtime . Die Subroutine mktime konvertiert die Struktur tm in die Zeit in Sekunden seit dem 1. Januar 1970 00:00:00 UTC. Dertm_wdayundtm_ydayFelder werden ignoriert und die anderen Komponenten der Struktur tm sind nicht auf die Bereiche beschränkt, die in der Datei /usr/include/time.h angegeben sind. Der Wert destm_isdstbestimmt die folgenden Aktionen der Subroutine mktime :

Element Beschreibung
0 Anfänglich wird angenommen, dass die Sommerzeit (DST) nicht wirksam ist.
>0 Es wird zunächst davon ausgegangen, dass DST wirksam ist.
-1 Bestimmt aktiv, ob die Sommerzeit ab der angegebenen Zeit und der lokalen Zeitzone wirksam ist. Die Ortszeitzoneninformationen werden von der Subroutine tzset festgelegt.

Nach erfolgreicher Beendigung legt die Subroutine mktime die Werte dertm_wdayundtm_ydayFelder. Andere Felder werden festgelegt, um die angegebene Uhrzeit seit dem 1. Januar 1970 darzustellen. Die Werte werden jedoch auf die in der Datei /usr/include/time.h angegebenen Bereiche gesetzt. Der Endwert dertm_mdayFeld wird erst festgelegt, wenn die Werte dertm_monundtm_yearFelder bestimmt werden.

Hinweis: Die Subroutine mktime kann keine Zeitwerte vor 00:00:00 UTC, 1. Januar 1970 und nach 03:14:07 UTC, 19. Januar 2038 konvertieren.

Die Subroutine difftime berechnet die Differenz zwischen zwei Kalenderzeiten: die Parameter Time1 und -Time0 .

Die Subroutine asctime konvertiert eine tm -Struktur in eine 26-stellige Zeichenfolge mit demselben Format wie ctime.

Wenn die Umgebungsvariable TZ definiert ist, überschreibt ihr Wert die Standardzeitzone ( U.S). Östliche Zeitzone. Die Funktion environment enthält das Format der von TZangegebenen Zeitzoneninformationen. TZ wird normalerweise festgelegt, wenn das System mit dem Wert gestartet wird, der in den Dateien /etc/environment oder /etc/profile definiert ist. Sie kann jedoch auch vom Benutzer als reguläre Umgebungsvariable festgelegt werden, um alternative Zeitzonenkonvertierungen durchzuführen.

Die Subroutine tzset legt die externen Variablen timezone, daylightund tzname so fest, dass sie die Einstellung von TZwiderspiegeln. Die Subroutine tzset wird von ctime und localtimeaufgerufen und kann auch explizit von einem Anwendungsprogramm aufgerufen werden.

Die externe Variable Zeitzone enthält die Differenz (in Sekunden) zwischen UTC und lokaler Standardzeit. Der Wert für Zeitzone ist beispielsweise 5 * 60 * 60 für U.S. In: Eastern Standard Time.

Die externe Variable daylight ist ungleich null, wenn eine Konvertierung der Tageslichtzeit angewendet werden soll. Diese Konvertierung folgt standardmäßig den U.S-Standardkonventionen. Es können auch andere Konventionen angegeben werden. Der Standardkonvertierungsalgorithmus wird an die Besonderheiten der Sommerzeit in U.Sin den Jahren 1974 und 1975 angepasst.

Die externe Variable tzname enthält den Namen der Zeitzone (tzname [0]) und der Zeitzone, wenn die Sommerzeit gilt (tzname [1]). Beispiel:

char *tzname[2] = {"EST", "EDT"};

Die Datei time.h enthält Deklarationen aller dieser Subroutinen und externen Elemente sowie die Struktur tm .

Parameter

Element Beschreibung
Taktzyklus Gibt den Zeiger auf den Zeitwert in Sekunden an.
Zeitzeiger Gibt den Zeiger auf eine tm -Struktur an.
Time1 Gibt den Zeiger auf eine time_t -Struktur an.
Time0 Gibt den Zeiger auf eine time_t -Struktur an.
Tm Gibt den Zeiger auf eine tm -Struktur an.

Rückgabewerte

Achtung: Die Rückgabewerte verweisen auf statische Daten, die von jedem Aufruf überschrieben werden.

Die Subroutine tzset gibt keinen Wert zurück.

Die Subroutine mktime gibt die angegebene Zeit in Sekunden zurück, die als Wert des Typs time_tcodiert ist. Wenn die Zeit nicht dargestellt werden kann, gibt die Funktion den Wert (time_t) -1 zurück.

Die Subroutinen localtime und gmtime geben einen Zeiger auf die -Struktur tmzurück.

Die Subroutinen ctime und asctime geben einen Zeiger auf eine 26-stellige Zeichenfolge zurück.

Die Subroutine difftime gibt die Differenz in Sekunden als Wert des Typs doublezurück.