strftime (C89)
Martin mentioned it, oto przykład:
#include <stdio.h>
#include <time.h>
int main() {
time_t t = time(NULL);
struct tm *tm = localtime(&t);
char s[64];
strftime(s, sizeof(s), "%c", tm);
printf("%s\n", s);
}
Przykładowe wyjście:
Thu Apr 14 22:39:03 2016
%c
specifier produkuje ten sam format, jak ctime
.
Jedną z zalet tej funkcji jest to, że zwraca ona liczbę zapisanych bajtów, co pozwala na lepszą kontrolę błędów w przypadku, gdy wygenerowany ciąg znaków jest zbyt długi.
asctime i ctime (C89)
asctime
jest wygodnym sposobem sformatować struct tm
:
#include <stdio.h>
#include <time.h>
int main() {
time_t t = time(NULL);
struct tm *tm = localtime(&t);
printf("%s\n", asctime(tm));
}
który wytwarza stały format wyjściowy jak:
Wed Jun 10 16:10:32 2015
i tam jest również ctime()
, który według standardu jest skrótem dla:
asctime(localtime())
Jak wspomniano o by Jonathan Leffler, format ma wadę polegającą na braku informacji o strefie czasowej.
POSIX 7 zaznaczono te funkcje jako „przestarzałe”, więc mogą one zostać usunięte w przyszłych wersjach:
Standardowe deweloperzy postanowili oznaczyć asctime() i asctime_r() Funkcje przestarzałe choć asctime() jest w standard ISO C ze względu na możliwość przepełnienia bufora. Standard ISO C udostępnia również funkcję strftime(), której można użyć w celu uniknięcia tych problemów.
C++ wersja tego pytania: How to get current time and date in C++?
Musisz przeczytać [czas (7)] (http://man7.org/linux/man-pages/man7/time.7.html) pierwszy ... –