Provided by: manpages-de-dev_1.11-1_all bug

BEZEICHNUNG

       strftime - formatiert Datum und Uhrzeit

ÜBERSICHT

       #include <time.h>

       size_t strftime(char *s, size_t max, const char *format,
                       const struct tm *tm);

BESCHREIBUNG

       Die  Funktion  strftime()  formatiert die Zeit tm entsprechend der Formatbeschreibung format und schreibt
       das Ergebnis in das Feld s der Größe max.

       Die  Formatbeschreibung  ist  eine  null-terminierte  Zeichenkette  und  kann   spezielle   Zeichenfolgen
       (sogenannte  Konvertierungsanweisungen)  enthalten,  von denen jede mit einem '%'-Zeichen beginnt und mit
       einem Zeichen endet, welches die Art der Konvertierung beschreibt (conversion specifier character).  Alle
       weiteren Zeichenfolgen sind normale Zeichenfolgen.

       Die Zeichen einfacher Zeichenfolgen (einschließlich des Null-Bytes) werden wortgetreu nach s kopiert. Die
       Zeichen von Konvertierungsanweisungen werden jedoch wie folgt ersetzt:

       %a     Der abgekürzte Name des Wochentags abhängig von der momentanen Locale.

       %A     Der vollständige Name des Wochentags abhängig von der momentanen Locale.

       %b     Der abgekürzte Monatsname abhängig von der momentanen Locale.

       %B     Der vollständige Monatsname abhängig von der momentanen Locale.

       %c     Das bevorzugte Datums- und Uhrzeit-Repräsentation laut Einstellungen der momentanen Locale.

       %C     Das Jahrhundert als zweistellige Zahl (Jahr/100). (SU)

       %d     Der Tag im Monat als Dezimalzahl (Bereich 01 - 31).

       %D     Äquivalent zu %m/%d/%y. (US-amerikanisches Format. In anderen Ländern ist %d/%m/%y eher üblich. In
              internationalem  Kontext  ist  dieses  Format daher mehrdeutig und sollte nicht verwendet werden.)
              (SU)

       %e     Wie %d, der Tag im Monat als Dezimalzahl, aber  eine  führende  Null  ist  durch  ein  Leerzeichen
              ersetzt. (SU)

       %E     Modifikator: Alternatives Format benutzen, siehe unten. (SU)

       %F     Äquivalent zu %Y-%m-%d (dem ISO-8601-Datumsformat) (C99)

       %G     Das wochenbasierte Jahr (siehe ANMERKUNGEN) nach ISO 8601 mit dem Jahrhundert als Dezimalzahl. Das
              vierstellige  Jahr,  das  zu  der  ISO-Wochennummer  (siehe  %V) passt. Es hat dasselbe Format und
              denselben Wert wie %, wenn aber die ISO-Wochennummer zum vorhergehenden oder nächsten Jahr gehört,
              wird stattdessen dieses Jahr benutzt.(TZ)

       %g     Wie %G aber ohne das Jahrhundert, also mit zweistelligem Jahr (00-99). (TZ)

       %h     Äquivalent zu %b (SU)

       %H     Die Stunde im 24h-Format als Ganzzahl (Bereich 00 - 23).

       %I     Die Stunde im 12h-Format als Ganzzahl (Bereich 01 - 12).

       %j     Der Tag im Jahr als Ganzzahl (Bereich 001 - 366).

       %k     Die Stunde im 24h-Format als Ganzzahl (Bereich 0 - 23); einzelne Ziffern haben ein vorangestelltes
              Leerzeichen. (Siehe auch %H.) (TZ)

       %l     Die Stunde im 12h-Format als Ganzzahl (Bereich 1 - 12); einzelne Ziffern haben ein vorangestelltes
              Leerzeichen. (Siehe auch %I.) (TZ)

       %m     Der Monat als Ganzzahl (Bereich 01 - 12).

       %M     Die Minute als Ganzzahl (Bereich 00 - 59).

       %n     Ein Zeilenvorschub. (SU)

       %O     Modifikator: Alternatives Format benutzen, siehe unten. (SU)

       %p     Entweder »AM« oder »PM«, je nach der übergebenen Uhrzeit, oder die entsprechenden Zeichenketten in
              der momentanen Locale. Mittag erhält »PM«, Mitternacht »AM«.

       %P     Wie %p, aber in Kleinbuchstaben. »am« oder  »pm«  oder  eine  entsprechende  Zeichenkette  in  der
              momentanen Locale. (GNU)

       %r     Zeit in AM/PM-Notation; in der POSIX-Locale ist das äquivalent zu %I:%M:%S %p. (SU)

       %R     Zeit in 24h-Notation (%H:%M). (SU) Für eine Version mit Sekunden siehe %T weiter unten.

       %s     Die Zahl der Sekunden seit der Epoche, also seit 1970-01-01 00:00:00 UTC. (TZ)

       %S     Die  Sekunde  als  Ganzzahl  (Bereich  00  -  60).  (Der  Bereich  geht  bis  60, um gelegentliche
              Schaltsekunden zu ermöglichen.)

       %t     Ein Tabulatorzeichen. (SU)

       %T     Zeit in 24h-Notation (%H:%M:%S). (SU)

       %u     Der Tag der Woche als Ganzzahl von 1 bis 7, mit Montag als 1. Siehe auch %w. (SU)

       %U     Die Wochennummer des aktuellen Jahres als Ganzzahl von 00 bis 53, beginnend mit dem ersten Sonntag
              als ersten Tag der Woche 01. Siehe auch %V und %W.

       %V     Die Wochennummer nach ISO 8601 des laufenden Jahres als Dezimalzahl von 01 bis 53, wobei  Woche  1
              die erste Woche ist, die wenigstens 4 Tage im laufenden Jahr hat. Siehe auch %U und %W. (SU)

       %w     Der Tag der Woche als Dezimalzahl von 0 bis 6, mit Sonntag als 0. Siehe auch %u.

       %W     Die  Wochennummer  des  aktuellen  Jahres  als Dezimalzahl von 00 bis 53, beginnend mit dem ersten
              Montag als ersten Tag der ersten Woche.

       %x     Die bevorzugte Datumsrepräsentation ohne die Zeit in der momentanen Locale.

       %X     Die bevorzugte Uhrzeitrepräsentation ohne das Datum in der momentanen Locale.

       %y     Das Jahr als Ganzzahl ohne das Jahrhundert (Bereich 00 - 99).

       %Y     Das Jahr als Ganzzahl mit dem Jahrhundert.

       %z     Die numerische Zeitzone in der Form +hhmm oder -hhmm (also die Verschiebung in Minuten relativ  zu
              UTC). (SU)

       %Z     Der Zeitzonename oder die Abkürzung.

       %+     Datum und Zeit im Format von date(1). (TZ) (Von Glibc2 nicht unterstützt)

       %%     Das Zeichen »%«.

       Einige   Konvertierungsanweisungen   können  durch  vorangestelltes  E  oder  O  modifiziert  werden,  um
       anzufordern, dass ein alternatives Format benutzt werden soll. Existiert das alternative  Format  in  der
       momentanen  Locale  nicht, ist das Verhalten so, als ob es keine Modifikation gibt. (SU)  Die Single Unix
       Specification erwähnt %Ec, %EC, %Ex, %EX, %Ey, %EY, %Od, %Oe, %OH, %OI, %Om, %OM,  %OS,  %Ou,  %OU,  %OV,
       %Ow,  %OW,  %Oy,  wobei  der  Effekt von O ist, alternative numerische Symbole zu benutzen (etwa römische
       Zahlen), und der von E, eine von der Locale abhängige alternative Repräsentation zu wählen.

       Die Zeit-Struktur tm wird in <time.h> definiert (siehe auch ctime(3)).

RÜCKGABEWERT

       Vorausgesetzt, dass die Zeichenkette einschließlich des abschließenden NULL-Zeichens nicht mehr  als  max
       Byte  ergibt, liefert strftime() die Anzahl der Byte (ohne das abschließende NULL-Zeichen) zurück, die in
       das Feld s geschrieben wurden. Falls  die  Länge  der  Zeichenkette  (einschließlich  des  abschließenden
       NULL-Zeichens)  größer  als  max  Byte  wäre,  gibt strftime 0 zurück und der Inhalt des Feldes ist nicht
       definiert.

       Beachten Sie, dass der Rückgabewert 0 nicht notwendigerweise auf  einen  Fehler  hinweist;  zum  Beispiel
       ergibt  %p in vielen Locales eine leere Zeichenkette. Eine leere format-Zeichenkette wird ebenso zu einer
       leeren Zeichenkette führen.

UMGEBUNGSVARIABLEN

       Die Umgebungsvariablen TZ und LC_CTIME werden benutzt.

ATTRIBUTE

       Siehe attributes(7) für eine Erläuterung der in diesem Abschnitt verwandten Ausdrücke.
       ┌───────────────┬───────────────────────┬────────────────────┐
       │ SchnittstelleAttributWert               │
       ├───────────────┼───────────────────────┼────────────────────┤
       │ strftime()    │ Multithread-Fähigkeit │ MT-Safe env locale │
       └───────────────┴───────────────────────┴────────────────────┘

KONFORM ZU

       SVr4, C89, C99. Es gibt strikte Teilmengenbeziehungen zwischen den  Konvertierungen  aus  ANSI  C  (nicht
       markiert),  jenen der Single Unix Specification (markiert als SU), denen aus dem Timezone-Paket von Olson
       (TZ) und denen aus der Glibc (GNU), außer dass %+ in der Glibc 2  nicht  unterstützt  wird.  Andererseits
       bietet  Glibc  2  einige Erweiterungen. POSIX.1 verweist nur auf ANSI C; POSIX.2 beschreibt unter date(1)
       einige Erweiterungen, die auch auf strftime zutreffen können. Die %F-Umwandlung findet sich  in  C99  und
       POSIX.1-2001.

       In  SUSv2  ließ  %S  einen  Bereich  von  00  bis  61  zu,  um  die  theoretisch mögliche Minute mit zwei
       Schaltsekunden zu ermöglichen. (Es hat nie so eine Minute gegeben.)

ANMERKUNGEN

   ISO-8601-Wochendaten
       %G, %g und %V ergeben Werte aus dem wochenbasierten Jahr, die nach der  Definition  im  ISO-8601-Standard
       berechnet  werden.  In  diesem System beginnen Woche an einem Montag und werden von 01, der ersten Woche,
       bis zu 52 oder 53 für die letzte Woche gezählt. Woche 1 ist die erste Woche, in der vier oder  mehr  Tage
       in  das neue Jahr fallen (oder synonym ist: Woche 01 ist die erste Woche des Jahres, die einen Donnerstag
       enthält, oder die Woche, die den 4. Januar enthält). Wenn drei oder weniger Tage der ersten Kalenderwoche
       des neuen Jahres in dieses Jahr fallen, dann zählt das wochenbasierte System nach ISO 8601 diese Tage als
       Teil der Woche 53 des Vorjahres. Zum Beispiel ist der 1. Januar 2010 ein Freitag, was bedeutet, dass  nur
       drei  Tage  dieser  Kalenderwoche  in  das Jahr 2010 fallen. So betrachtet das wochenbasierte System nach
       ISO 8601 diese Tage als Teil der Woche 53 (%V) des Jahres 2009 (%G); Woche 01  des  ISO-8601-Jahres  2010
       beginnt am Montag, dem 4. Januar 2010.

   Anmerkungen zur Glibc
       Glibc  bietet  einige  Erweiterungen  für  Konvertierungsanweisungen.  (Diese  Erweiterungen werden nicht
       POSIX.1-2001 beschrieben, aber ein paar Systeme stellen  ähnliche  Möglichkeiten  bereit).  Zwischen  dem
       '%'-Zeichen  und  dem  Zeichen zur Festlegung der Umwandlung, können ein optionaler Schalter und ein Feld
       Weite angegeben werden. (Diese gehen den Modifikatoren E oder O voraus, wenn vorhanden.)

       Die folgenden Zeichen dürfen als Schalter genutzt werden:

       _      (Unterstrich) füllt eine numerische Ergebniszeichenkette mit Leerzeichen auf.

       -      (Strich) füllt eine numerische Ergebniszeichenkette nicht mit Leerzeichen auf.

       0      Füllt eine numerische Ergebniszeichenkette mit Nullen auf, sogar  wenn  das  Konvertierungszeichen
              standardmäßig die Auffüllung mit Leerzeichen vorgibt.

       ^      wandelt alphanumerische Zeichen in der Ergebniszeichenkette in Großbuchstaben um.

       #      wechselt  in der Ergebniszeichenkette Groß- und Kleinschreibung. (Dieser Schalter arbeitet nur mit
              bestimmten Konvertierungsanweisungen und davon ergibt nur %Z wirklich Sinn.)

       Eine optionale Dezimalzahl zur Angabe folgt dem (möglicherweise fehlenden) Schalter. Falls die natürliche
       Größe des Feldes kleiner ist als diese  Weite,  dann  wird  die  Ergebnis-Zeichenkette  (links)  bis  zur
       angegebenen Weite aufgefüllt.

FEHLER

       Wenn die Länge des ausgegebenen Zeichenkette max Bytes übersteigt, wird errno nicht gesetzt. Das macht es
       unmöglich,  diesen  Fehler  von  anderen Fällen zu unterscheiden, wo die format-Zeichenkette regulär eine
       Ausgabezeichenkette der Länge Null produziert. POSIX.1-2001 gibt keine errno-Einstellungen für strftime()
       an.

       Ein paar fehlerhafte Versionen von gcc(1) beschweren sich über  die  Verwendung  von  %c:  warning:  `%c'
       yields  only  last 2 digits of year in some locales. Natürlich werden Programmierer zur Verwendung von %c
       ermutigt, weil es die bevorzugte Darstellung von Datum und Uhrzeit bewirkt. Man trifft bei  der  Umgehung
       dieses  gcc(1)-Problemes  auf  alle  möglichen  seltsamen  Effekte.  Ein  relativ  sauberer Umweg ist das
       Hinzufügen einer Zwischenfunktion.

           size_t
           my_strftime(char *s, size_t max, const char *fmt,
                       const struct tm *tm)
           {
               return strftime(s, max, fmt, tm);
           }

       Heutzutage stellt gcc(1) die Option -Wno-format-y2k bereit, um die Warnung zu unterdrücken. Damit ist die
       eben erwähnte Hilfskonstruktion nicht mehr erforderlich.

BEISPIEL

       Zu RFC 2822 konformes Datumsformat (mit einer englischen Locale für %a und %b)

         "%a, %d %b %Y %T %z"

       Zu RFC 822 konformes Datumsformat (mit einer englischen Locale für %a und %b)

         "%a, %d %b %y %T %z"

   Beispielprogramm
       Das folgende Programm kann zum Experimentieren mit strftime() verwendet werden.

       Einige Beispiele der von der Glibc-Implementierung von strftime()  erstellten  Ergebniszeichenkette  sind
       wie folgt:

           $ ./a.out '%m'
           Ergebniszeichenkette ist "11"
           $ ./a.out '%5m'
           Ergebniszeichenkette ist "00011"
           $ ./a.out '%_5m'
           Ergebniszeichenkette ist "   11"

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

       int
       main(int argc, char *argv[])
       {
           char outstr[200];
           time_t t;
           struct tm *tmp;

           t = time(NULL);
           tmp = localtime(&t);
           if (tmp == NULL) {
               perror("localtime");
               exit(EXIT_FAILURE);
           }

           if (strftime(outstr, sizeof(outstr), argv[1], tmp) == 0) {
               fprintf(stderr, "strftime lieferte 0");
               exit(EXIT_FAILURE);
           }

           printf("Ergebniszeichenkette ist \"%s\"\n", outstr);
           exit(EXIT_SUCCESS);
       }

SIEHE AUCH

       date(1), time(2), ctime(3), setlocale(3), sprintf(3), strptime(3)

KOLOPHON

       Diese  Seite  ist  Teil  der  Veröffentlichung  4.04  des Projekts Linux-man-pages. Eine Beschreibung des
       Projekts, Informationen, wie Fehler gemeldet werden können sowie die aktuelle Version dieser Seite finden
       sich unter http://www.kernel.org/doc/man-pages/.

ÜBERSETZUNG

       Die deutsche Übersetzung dieser Handbuchseite wurde von Helge Kreutzmann  <debian@helgefjell.de>,  Martin
       Eberhard Schauer <Martin.E.Schauer@gmx.de> und Mario Blättermann <mario.blaettermann@gmail.com> erstellt.

       Diese  Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer
       bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.

       Wenn Sie Fehler in der Übersetzung dieser  Handbuchseite  finden,  schicken  Sie  bitte  eine  E-Mail  an
       <debian-l10n-german@lists.debian.org>.

GNU                                               2. März 2015                                       STRFTIME(3)