strftime (C89)
Martin mentioned it, he aquí un ejemplo:
#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);
}
Salida de ejemplo:
Thu Apr 14 22:39:03 2016
El especificador %c
produce el mismo formato que ctime
.
Una ventaja de esta función es que devuelve el número de bytes escritos, lo que permite un mejor control de errores en caso de que la cadena generada sea demasiado larga.
asctime y ctime (C89)
asctime
es una manera conveniente para formatear un 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));
}
que produce un formato de salida fijo como:
Wed Jun 10 16:10:32 2015
Y hay también es ctime()
que el estándar dice es un atajo para:
asctime(localtime())
Como se mencionó by Jonathan Leffler, el formato tiene el inconveniente de no tener información de zona horaria.
POSIX 7 marcado esas funciones como "obsoleta" para que pudieran ser eliminadas en futuras versiones:
Los desarrolladores estándar decidieron marcar el asctime() y asctime_r() funciones de obsolescencia a pesar de que asctime() está en el estándar ISO C debido a la posibilidad de desbordamiento del búfer. El estándar ISO C también proporciona la función strftime() que se puede usar para evitar estos problemas.
C++ versión de esta pregunta: How to get current time and date in C++?
Es necesario leer [Tiempo (7)] (http://man7.org/linux/man-pages/man7/time.7.html) primero ... –