====== strftime() ====== strftime ist definiert in der ''[[start|time]]'', die in C über ''time.h'', bzw. in C++ über ''ctime'' eingebunden wird. ===== Funktion ===== Erzeugt aus einem Formatstring und einem Zeitpunktsbeschreibung ([[struct_tm|struct tm]]) einen Ausgabestring. ===== Signatur ===== #include size_t strftime ( char * ptr, size_t maxsize, const char * format, const struct tm * timeptr ); **ptr**: Zeiger auf das Zielarray, indem der zu erstellende String geschrieben werden soll \\ **maxsize**: Größe des Zielarrays, maximale Anzahl der zu schreibenen Zeichen \\ **format**: Formatstring, entsprechend wie der String aufgebaut werden soll, siehe Formattabelle \\ **timePtr**: [[struct_tm|tm-Struktur]], die den zu druckenden Zeitpunkt beschriebt \\ **Return value**: Sofern der String in weniger als die als ''maxsize'' angegebenen Zeichen passt, wird die Anzahl der verwendeten Zeichen (ohne das Nullbyte) zurückgeben. Konnte der String nicht vollständig in das Array geschrieben werden, so wird 0 zurückgegeben. ==== Formattabelle ==== Der Formatstring darf beliebige Zeichen enthalten. Zeichen, die mit einem % beginnen sind Sonderzeichen und werden entsprechend der folgenden Tabelle ersetzt. Ein grüner Haken () bei Lokalisiert bedeutet, dass auf einem als deutsch eingestellten Computer ein entsprechend eingedeutschter String erscheinen kann. ^ sign ^ Ersatzstring ^ Beispiel ^ Lokalisiert ^ | %a | abgekürzter Wochentagsname | Thu | | | %A | ausgeschriebener Wochentagsname | Thursday | | | %b | abgekürzter Monatsname | Aug | | | %B | ausgeschriebener Monatsname | August | | | %c | volle Datums- und Zeitrepresentation | Thu Aug 23 14:55:02 2001 | | | %d | Tag des Monats (01-31) | 23 | | | %H | Stunde im 24-Stunden-Format (00-23) | 14 | | | %I | Stunde im 12-Stunden-Format (01-12) | 02 | | | %j | Tag des Jahres (001-366) | 235 | | | %m | Monat als Dezimalnummer (01-12) | 08 | | | %M | Minute (00-59) | 55 | | | %p | AM oder PM Angabe | PM | | | %S | Sekunde (00-61) | 02 | | | %U | Wochennummer mit dem ersten Sonntag als ersten Tag der ersten Woche (00-53) | 33 | | | %w | Wochentag als Dezimalzahl mit Sonntag als 0 (0-6) | 4 | | | %W | Wochennummer mit dem ersten Montag als ersten Tag der ersten Woche (00-53) | 34 | | | %x | Datum | 08/23/01 | | | %X | Zeit | 14:55:02 | | | %y | Jahr, zweistellig (00-99) | 01 | | | %Y | Jahr, vierstellig | 2001 | | | %Z | Zeitzone oder Abkürzung der Zeitzone | CDT | | | %% | Prozentzeichen | % | | ===== Fehlerquellen ===== FIXME ===== Beispiel ===== #include #include #include int main(void) { time_t timeStamp; struct tm * timeInfo; char buffer[80]; time( &timeStamp ); timeInfo = localtime( &timeStamp ); strftime( buffer, 80, "Es ist nun %H Uhr, %M Minuten.", timeInfo ); puts( buffer ); return 0; } Ausgabe: Es ist nun 07 Uhr, 56 Minuten. ===== siehe auch ===== [[c:lib:time:start|time]]: [[c:lib:time:time|time()]], [[c:lib:time:time_t|time_t]], [[c:lib:time:asctime|asctime()]], [[c:lib:time:ctime|ctime()]]