Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ getdate(3C) — Reliant UNIX 5.44c4

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

ctype(3C)

setlocale(3C)

environ(5)

time(5)

getdate(3C)                                                     getdate(3C)

NAME
     getdate - Datums- und Zeitangaben umwandeln

SYNTAX
     #include <time.h>

     struct tm *getdate(const char *string);
     extern int getdateerr;

BESCHREIBUNG
     getdate() wandelt benutzerdefinierbare Datums- und/oder Zeitangaben
     aus string in eine tm-Struktur um. Die Strukturdeklaration befindet
     sich in der Datei time.h [siehe auch ctime(3C)].

     Zum Zerlegen und Interpretieren der Eingabezeichenkette werden benut-
     zerdefinierte Schablonen verwendet. Diese Schablonen sind Textdateien,
     welche der Benutzer anlegt; diese Textdateien werden über die Umge-
     bungsvariable DATEMSK angegeben. Jede Zeile der Schablone stellt eine
     akzeptierbare Datums- und/oder Zeitangabe dar; dabei werden einige der
     Felddeskriptoren verwendet, die auch das Kommando date verwendet. Die
     erste Zeile in der Schablone, die der Eingabespezifikation entspricht,
     wird zur Interpretation und Umwandlung in das interne Zeitformat ver-
     wendet. Ist die Operation erfolgreich, so liefert die Funktion
     getdate() einen Zeiger auf eine Struktur vom Typ tm zurück; ansonsten
     wird NULL zurückgegeben und die globale Variable getdateerr gesetzt.

     Die folgenden Felddeskriptoren werden unterstützt:

     %%   entspricht %
     %a   abgekürzter Wochentagsname
     %A   ausgeschriebener Wochentagsname
     %b   abgekürzter Monatsname
     %B   ausgeschriebener Monatsname
     %c   lokale Datums- und Zeitdarstellung
     %d   Monatstag (01 - 31; die führende 0 ist optional)
     %e   entspricht %d
     %D   Datum als %m/%d/%y
     %h   abgekürzter Monatsname
     %H   Stunde (00 - 23)
     %I   Stunde (01 - 12)
     %m   Monatsnummer (01 - 12)
     %M   Minute (00 - 59)
     %n   entspricht \n
     %p   lokales Äquivalent zu AM oder PM
     %r   Zeit als %I:%M:%S %p
     %R   Zeit als %H:%M
     %S   Sekunde (00 - 59)
     %t   Tabulator einfügen
     %T   Zeit als %H:%M:%S
     %w   Wochentagsnummer (0 - 6; Sonntag = 0)
     %x   lokale Darstellung des Datums
     %X   lokale Darstellung der Uhrzeit



Seite 1                      Reliant UNIX 5.44               Gedruckt 11/98

getdate(3C)                                                     getdate(3C)

     %y   Jahr mit Jahrhundert (00 - 99)
     %Y   Jahr als ccyy (z. B. 1986)
     %Z   Zeitzonenname oder keine Zeichen, wenn keine Zeitzone existiert.

          Wenn die durch %Z gelieferte Zeitzone nicht der Zeitzone ent-
          spricht, die getdate() erwartet, wird in einer Fehlermeldung auf
          ungültige Eingabespezifikationen hingewiesen. Die Funktion
          getdate() berechnet eine erwartete Zeitzone basierend auf Infor-
          mationen, die der Funktion zur Verfügung gestellt wurden (wie
          beispielsweise Stunde, Tag und Monat).

     Bei dem von getdate() durchgeführten Abgleich zwischen der Schablone
     und der Eingabespezifikation wird zwischen Groß- und Kleinschreibung
     unterschieden.

     Die Monats- und Wochentagsnamen können aus einer beliebigen Kombina-
     tion von Klein- und Großbuchstaben bestehen. Der Benutzer kann bestim-
     men, daß die Angabe der Eingabezeit oder des Eingabedatums sprachab-
     hängig ist. Dies geschieht durch Setzen der Werte LCTIME und LCCTYPE
     bei setlocale().

     Führende Nullen sind für Deskriptoren, die diese zulassen, nicht
     erforderlich. Für diese Deskriptoren sind jedoch höchsten zwei Ziffern
     einschließlich der führenden Nullen zulässig. Zusätzliche Zwischen-
     raumzeichen werden sowohl in der Schablonendatei als auch in string
     ignoriert.

     Die Felddeskriptoren %c, %x und %X werden nur unterstützt, wenn sie
     nicht unterstützte Felddeskriptoren enthalten.

     Die folgenden Regeln gelten für die Umwandlung von Eingabespezifika-
     tionen in das interne Format:

     -  Wenn %Z gescannt wird, initialisiert getdate() die heruntergebro-
        chene Zeit als aktuelle Zeit in der gescannten Zeitzone. Andern-
        falls wird die heruntergebrochene Zeit basierend auf der aktuellen
        lokalen Zeit initialisiert, so als wäre localtime() aufgerufen wor-
        den.

     -  Ist nur der Wochentag gegeben, wird der aktuelle Tag angenommen,
        wenn der angegebene Wochentag identisch mit dem aktuellen Tag ist.
        Liegt der gegebene Tag vor dem aktuellen, wird der Wochentag aus
        der nächsten Woche genommen.

     -  Ist nur der Monat angegeben, wird der aktuelle Monat angenommen,
        wenn der angegebene Monat gleich dem aktuellen Monat ist. Liegt der
        angegebene Monat vor dem aktuellen Monat, wird das nächste Jahr
        angenommen, wenn ansonsten kein Jahr angegeben ist. (Der erste Tag
        des Monats wird angenommen, wenn kein Tag angegeben ist).

     -  Wird keine Stunde, Minute und Sekunde angegeben, wird die aktuelle
        Stunde, Minute und Sekunde übernommen.


Seite 2                      Reliant UNIX 5.44               Gedruckt 11/98

getdate(3C)                                                     getdate(3C)

     -  Wird kein Datum angegeben, wird der aktuelle Tag angenommen, wenn
        die angegebene Stunde größer als die aktuelle Stunde ist. Ist die
        angegebene Stunde kleiner als die aktuelle, so wird der nächste Tag
        angenommen.

ERGEBNIS
     Bei einem Fehler liefert getdate() den Wert NULL und setzt die Varia-
     ble getdateerr, um den Fehler anzuzeigen.

     Die möglichen Werte von getdateerr haben folgende Bedeutung.

     1    Die Umgebungsvariable DATEMSK ist undefiniert oder Null.

     2    Die Schablonendatei kann nicht zum Lesen geöffnet werden.

     3    Der Dateistatus konnte nicht gelesen werden.

     4    Die Schablonendatei ist keine reguläre Datei.

     5    Ein Fehler trat beim Lesen der Schablonendatei auf.

     6    malloc() konnte nicht erfolgreich ausgeführt werden, da zu wenig
          Speicherplatz verfügbar war.

     7    Es gibt keine Zeile aus der Schablonendatei, die der Eingabe ent-
          spricht.

     8    Das Eingabeformat ist ungültig (z. B. February 31).

BEISPIELE
     Beispiel 1:

     Das folgende Beispiel zeigt den möglichen Inhalt einer Schablone:

          %m
          %A %B %d %Y, %H:%M:%S
          %A
          %B
          %m/%d/%y %I %p
          %d,%m,%Y %H:%M
          at %A the %dst of %B in %Y
          run job at %I %p,%B %dnd
          %A den %d. %B %Y %H.%M Uhr











Seite 3                      Reliant UNIX 5.44               Gedruckt 11/98

getdate(3C)                                                     getdate(3C)

     Beispiel 2:

     Es folgen einige Beispiele für gültige Eingabespezifikationen für die
     obigen Schablonen:

          getdate("10/1/87 4 PM")
          getdate("Friday")
          getdate("Friday September 19 1987, 10:30:30")
          getdate("24,9,1986 10:30")
          getdate("at monday the 1st of december in 1986")
          getdate("run job at 3 PM, december %2nd")

     Wenn die Umgebungsvariable LANG auf german gesetzt wird, ist folgende
     Angabe gültig:

          getdate("Freitag den 10. Oktober 1986 10.30 Uhr")

     Beispiel 3:

     Lokale Zeit- und Datumsangaben werden ebenfalls unterstützt. Das fol-
     gende Beispiel zeigt, wie lokale Datums- und Zeitangaben in Schablonen
     definiert werden können.

     Aufruf                       Zeile in Schablonendatei

     getdate("11/27/86")          %m/%d/%y
     getdate("27.11.86")          %d.%m.%y
     getdate("86-11-27")          %y-%m-%d
     getdate("Friday 12:00:00")   %A %H:%M:%S

     Beispiel 4:

     Die folgenden Beispiele verdeutlichen die obigen Regeln. Es wird ange-
     nommen, daß das aktuelle Datum Montag, 22. September 12:19:47 EDT 1986
     ist und die Umgebungsvariable LANG nicht eingestellt ist.

                    Zeile in
     Eingabe        Schablonendatei   Datum

     Mon            %a                Mon Sep 22 12:19:48 EDT 1986
     Sun            %a                Sun Sep 28 12:19:49 EDT 1986
     Fri            %a                Fri Sep 26 12:19:49 EDT 1986
     September      %B                Mon Sep  1:19:49 EDT 1986
     January        %B                Thu Jan  1:19:49 EST 1987
     December       %B                Mon Dec  1:19:49 EST 1986
     Sep Mon        %b %a             Mon Sep  1:19:50 EDT 1986
     Jan Fri        %b %a             Fri Jan  2 12:19:50 EST 1987
     Dec Mon        %b %a             Mon Dec  1:19:50 EST 1986
     Jan Wed 1989   %b %a %Y          Wed Jan  4 12:19:51 EST 1989
     Fri 9          %a %H             Fri Sep 26 09:00:00 EDT 1986




Seite 4                      Reliant UNIX 5.44               Gedruckt 11/98

getdate(3C)                                                     getdate(3C)

     Feb 10:30      %b %H:%S          Sun Feb  1 10:00:30 EST 1987
     10:30          %H:%M             Tue Sep 23 10:30:00 EDT 1986
     13:30          %H:%M             Mon Sep 22 13:30:00 EDT 1986

HINWEISE
     Nachfolgende Aufrufe von getdate() ändern den Inhalt von getdateerr.

     Daten vor 1970 und nach 2037 sind ungültig.

     getdate() macht ausdrücklichen Gebrauch von den in ctype(3C) definier-
     ten Makros.

DATEIEN
     /usr/lib/locale/locale/LCTIME
          sprachabhängige druckbare Dateien

     /usr/lib/locale/locale/LCCTYPE
          zeichensatzabhängige druckbare Dateien

SIEHE AUCH
     ctype(3C), setlocale(3C), environ(5), time(5).

































Seite 5                      Reliant UNIX 5.44               Gedruckt 11/98

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026