strftime(3C) strftime(3C)
NAME
strftime, cftime, ascftime - Datum und Zeit in Zeichenkette umwandeln
SYNTAX
#include <time.h>
sizet strftime(char *s, sizet maxsize, const char *format,
const struct tm *timeptr);
int cftime(char *s, char *format, const timet *clock);
int ascftime(char *s, const char *format, const struct tm *timeptr);
BESCHREIBUNG
strftime(), ascftime(), und cftime() formatieren Datum und Zeit nach
den Angaben aus der Zeichenkette format in das Feld, auf das s zeigt.
Dabei besteht die Zeichenkette format aus einer oder mehreren Umwand-
lungsanweisungen und gewöhnlichen Zeichen. Alle gewöhnlichen Zeichen,
einschließlich des abschließenden Nullbytes, werden unverändert in die
Zeichenkette kopiert. Bei Verwendung von strftime() werden nicht mehr
als maxsize Zeichen in die Zeichenkette geschrieben.
Wenn format gleich (char *)0 ist, dann wird für strftime() das vorein-
gestellte Format "%c" und für cftime() und ascftime() das voreinge-
stellte Format "%C" [XPG3] verwendet. cftime() und ascftime() versu-
chen zuerst, den Wert der Umgebungsvariablen CFTIME festzustellen; ist
diese Umgebungsvariable nicht definiert oder leer, wird das voreinge-
stellte Format verwendet.
Jede Umwandlungsanweisung wird durch die entsprechenden Zeichen
ersetzt, die in der folgenden Liste beschrieben werden. Die entspre-
chenden Zeichen werden durch die Kategorie LCTIME der lokalen Umge-
bung, bei strftime() und ascftime() durch den Inhalt von timeptr und
bei cftime() durch den Inhalt von clock bestimmt:
%% ist das Zeichen %
%a abgekürzter Wochentagsname der lokalen Umgebung
%A ausgeschriebener Wochentagsname der lokalen Umgebung
%b abgekürzter Monatsname der lokalen Umgebung
%B ausgeschriebener Monatsname der lokalen Umgebung
%c entsprechende Datums- und Zeitdarstellung der lokalen Umgebung
%C Jahrhundert (Jahr geteilt durch 100 als ganze Zahl) (00-99) [XPG4]
Datums- und Zeitdarstellung nach date(1) [XPG3]
%d Monatstag (01 - 31)
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
strftime(3C) strftime(3C)
%D Datum als %m/%d/%y
%e Monatstag (1 - 31; vor einzelnen Ziffern steht ein Leerzeichen)
%f Datums- und Zeitdarstellung nach date(1) [XPG4]
%h abgekürzter Monatsname der lokalen Umgebung
%H Stunde (00 - 23)
%I Stunde (01 - 12)
%j Tag des Jahres (001 - 366)
%m Nummer des Monats (01 - 12)
%M Minute (00 - 59)
%n entspricht \n
%p Bezeichnung der lokalen Umgebung entweder AM oder PM
%r Zeit im Format %I:%M:%S [AMPM]
%R Zeit im Format %H:%M
%S Sekunden (00 - 61), erlaubt Schaltsekunden
%t fügt ein Tabulatorzeichen ein
%T Zeit im Format %H:%M:%S
%u Wochentag als Zahl (1 - 7), Montag = 1 [XPG4]
%U Nummer der Woche im Jahr (00 - 53), Sonntag ist der erste Tag der
Woche 1
%V Nummer der Woche im Jahr (01 - 53), Montag ist der erste Tag der
Woche. Wenn die Woche mit dem 1. Januar im neuen Jahr vier oder
mehr Tage hat, hat diese Woche die Nummer 1, sonst hat sie die
Nummer 53 des vorhergehenden Jahres und die darauffolgende Woche
hat die Nummer 1. [XPG4]
%w Wochentag als Zahl (0 - 6), Sonntag = 0
%W Nummer der Woche im Jahr (00 - 53), Montag ist der erste Tag der
Woche 1
%x die entsprechende Datumsdarstellung der lokalen Umgebung
%X die entsprechende Zeitdarstellung der lokalen Umgebung
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98
strftime(3C) strftime(3C)
%y Jahr innerhalb des Jahrhunderts (00 - 99)
%Y Jahr in der Form ccyy (z. B. 1986)
%Z Zeitzonenname oder Abkürzung dieses Namens; enthält keine Zeichen,
wenn keine Zeitzone existiert
Der Unterschied zwischen %U und %W besteht darin, welcher Tag der
erste in einer Woche ist. Die Woche 01 ist die erste Woche im Januar,
die mit einem Sonntag (bei %U) oder einem Montag (bei %W) anfängt. Die
Wochennummer 00 enthält diejenigen Tage vor dem ersten Sonntag (%U)
oder Montag (%W) im Januar.
Achtung: Die Umwandlungsanweisungen %f, %V und %u werden nur im
XPG4-Modus erkannt. %C hat unterschiedliche Bedeutung, je
nachdem ob Sie im XPG3-Modus oder im XPG4-Modus übersetzt
haben bzw. das Programm laufen lassen (bei dynamischer Ein-
stellung des Modus durch die Umgebungsvariable).
Ist die Anzahl der resultierenden Bytes einschließlich Nullbyte nicht
größer als maxsize, liefert strftime() die Anzahl der Bytes zurück,
die nach s kopiert wurden (ausschließlich des Nullbytes). Ansonsten
wird 0 zurückgegeben, und der Inhalt von s ist unbestimmt. cftime()
und ascftime() liefern die Anzahl der Bytes (ausschließlich des
abschließenden Nullbytes) zurück, die nach s kopiert wurden.
Modifizierte Umwandlungsanweisungen
Einige Umwandlungsanweisungen können mit den Zeichen E und O modifi-
ziert werden. Dadurch wird angegeben, daß ein alternatives Format bzw.
eine andere Anweisung verwendet werden soll, als bei der unmodifizier-
ten Anweisung (siehe Handbuch "Leitfaden für Programmierer: Interna-
tionalisierung - Lokalisierung"). Wenn dieses Format oder diese Anwei-
sung nicht in der aktuellen Locale vorliegt, ist das Verhalten wie bei
der unmodifizierten Umwandlungsanweisung.
Achtung: Diese Umwandlungsanweisungen werden nur im XPG4-Modus
erkannt. Im XPG3-Modus werden sie unverändert zurückgege-
ben.
%Ec Alternative Darstellung der Locale für Datum und Zeit.
%EC Name des Basisjahrs (Zeitraum) bei der alternativen Darstellung
der Locale.
%Ex Alternative Darstellung der Locale für das Datum.
%EX Alternative Darstellung der Locale für die Zeit.
Seite 3 Reliant UNIX 5.44 Gedruckt 11/98
strftime(3C) strftime(3C)
%Ey Offset zu %EC (nur Jahr) in der alternativen Darstellung der
Locale.
%EY Alternative Darstellung für das Jahr.
%Od Monatstag; Verwendung der alternativen numerischen Symbole der
Locale; es wird mit führenden Nullen nach Bedarf aufgefüllt,
wenn es ein alternatives Symbol für Null gibt, andernfalls wird
mit führenden Leerzeichen aufgefüllt.
%Oe Monatstag; Verwendung der alternativen numerischen Symbole der
Locale; bei Bedarf wird mit führenden Leerzeichen aufgefüllt.
%OH Stunde (Angabe als 24 Stunden); Verwendung der alternativen
numerischen Symbole der Locale.
%OI Stunde (Angabe als 12 Stunden); Verwendung der alternativen
numerischen Symbole der Locale.
%Om Monat; Verwendung der alternativen numerischen Symbole der
Locale.
%OM Minuten; Verwendung der alternativen numerischen Symbole der
Locale.
%OS Sekunden; Verwendung der alternativen numerischen Symbole der
Locale.
%Ou Nummer des Wochentags in der alternativen Darstellung der Locale
(Montag = 1).
%OU Nummmer der Woche (Sonntag ist der erste Tag der Woche; Regeln
entsprechend %U); Verwendung der alternativen numerischen Sym-
bole der Locale.
%OV Nummer der Woche (Montag ist der erste Tag der Woche; Regeln
entsprechend %V); Verwendung der alternativen numerischen Sym-
bole der Locale.
%Ow Nummer des Wochentags (Sonntag = 0); Verwendung der alternativen
numerischen Symbole der Locale.
%OW Nummer der Woche (Montag ist der erste Tag der Woche); Verwen-
dung der alternativen numerischen Symbole der Locale.
%Oy Jahr (Offset zu %C) in der alternativen Darstellung der Locale
und mit den alternativen Symbolen der Locale.
Seite 4 Reliant UNIX 5.44 Gedruckt 11/98
strftime(3C) strftime(3C)
Auswahl der Ausgabesprache
Die voreingestellte Sprache für die Ausgaben von strftime(), cftime()
und ascftime() ist amerikanisches Englisch. Der Benutzer kann die Aus-
gabesprache von strftime(), cftime() oder ascftime() durch Einstellung
der Kategorie LCTIME mit setlocale() für die lokale Umgebung auswäh-
len.
Zeitzone
Die Zeitzone wird aus der Umgebungsvariablen TZ übernommen [siehe
ctime(3C)].
BEISPIELE
Das folgende Beispiel demonstriert die Benutzung von strftime(). Nach
der Ausführung des folgenden Funktionsaufrufs mit dem Datum Donner-
stag, 28. August, 1986 um 12:44:36 in Baden-Württemberg in tmptr:
strftime (str, strsize, "%A %b %d %j", tmptr)
erhält man in str das Resultat "Donnerstag Aug 28 240".
HINWEISE
cftime() und ascftime() sind veraltet. Statt dessen sollte strftime()
verwendet werden.
Achten Sie darauf, daß einige Umwandlungsanweisungen nur im XPG4-Modus
erkannt werden. Im XPG3-Modus werden die betreffenden Umwandlungsan-
weisungen unverändert zurückgegeben.
DATEIEN
/usr/lib/locale/locale/LCTIME
standortabhängige Datums- und Zeitinformationen
SIEHE AUCH
ctime(3C), getenv(3C), setlocale(3C), LCTIME(4), timezone(4),
environ(5), time(5).
Seite 5 Reliant UNIX 5.44 Gedruckt 11/98