Me pregunto si hay alguna función que devolvería el tiempo actual en segundos, solo 2 dígitos de segundos? Estoy usando gcc 4.4.2.obtener la hora actual en segundos
Respuesta
El siguiente programa completo que muestra cómo acceder al valor de los segundos:
#include <stdio.h>
#include <time.h>
int main (int argc, char *argv[]) {
time_t now;
struct tm *tm;
now = time(0);
if ((tm = localtime (&now)) == NULL) {
printf ("Error extracting time stuff\n");
return 1;
}
printf ("%04d-%02d-%02d %02d:%02d:%02d\n",
tm->tm_year+1900, tm->tm_mon+1, tm->tm_mday,
tm->tm_hour, tm->tm_min, tm->tm_sec);
return 0;
}
Genera:
2010-02-11 15:58:29
Cómo funciona es la siguiente.
- que llama
time()
para obtener la mejor aproximación a la hora actual (por lo general el número de segundos desde la época pero que en realidad no es un mandato de la norma). - luego llama al
localtime()
para convertir eso en una estructura que contiene los campos individuales de fecha y hora, entre otras cosas. - en ese punto, puede desregular la estructura para obtener los campos que le interesan (
tm_sec
en su caso, pero he mostrado algunos de ellos).
Tenga en cuenta que también se puede utilizar en lugar de gmtime()
localtime()
si desea que la hora de Greenwich o GMT para los que son demasiado jóvenes para recordar :-).
Una forma más portátil para hacer esto es para obtener la hora actual como una estructura time_t
:
time_t mytime = time((time_t*)0);
recuperar un struct tm
para este time_t
:
struct tm *mytm = localtime(&mytime);
Examine el tm_sec
miembro del mytm
. Dependiendo de su biblioteca de C, no hay garantía de que el valor de retorno de time()
se base en una cantidad de segundos desde el comienzo de un minuto.
'time_t mytime ((time_t *) 0);' no es válido en C y tiene un desajuste de tipo en C++. ¿Querías decir 'time_t mytime = time (0);'? –
@R Samuel Klatchko: Sí, gracias. He estado haciendo demasiado C++ y luego olvidé la llamada crucial de 'tiempo'. (En realidad, olvidé el nombre de la variable originalmente, pero me arruiné solucionándolo mientras escribía la respuesta.) –
Creo que esto es lo que buscas. Si no, mis disculpas. :)
#include <stdio.h>
#include <string.h>
#include <time.h>
int main() {
char secstr[128];
struct tm current_time;
time_t current_secs = time(NULL);
memset(secstr, 0, sizeof(secstr));
localtime_r(¤t_secs, ¤t_time);
strftime(secstr, sizeof(secstr), "%S", ¤t_time);
fprintf(stdout, "The second: %s\n", secstr);
return(0);
}
que desea utilizar gettimeofday:
hombre 2 gettimeofday
#include <stdio.h>
#include <sys/time.h>
int main (int argc, char **argv)
{
int iRet;
struct timeval tv;
iRet = gettimeofday (&tv, NULL); // timezone structure is obsolete
if (iRet == 0)
{
printf ("Seconds/USeconds since epoch: %d/%d\n",
(int)tv.tv_sec, (int)tv.tv_usec);
return 0;
}
else
{
perror ("gettimeofday");
}
return iRet;
}
Esto es mejor utilizar entonces el tiempo (0), debido a que obtiene los useconds así, de forma atómica, que es el más común caso de uso
- 1. Obtener la fecha/hora actual en segundos
- 2. Cómo obtener la hora actual
- 3. Obtener la hora actual en C
- 4. Cómo obtener la hora actual en milisegundos programación en C
- 5. obtiene la hora actual
- 6. Obtener un DateTime restando segundos desde la fecha actual
- 7. ¿Cómo obtener la hora actual del GPS?
- 8. Obtener la hora actual del sistema?
- 9. ¿Cómo obtener la fecha y hora actual?
- 10. Obtener la hora actual del sistema
- 11. Android obtener la hora UTC actual
- 12. ¿Admite el marco de .NET obtener la hora actual en segundos basada en la marca de tiempo de UNIX?
- 13. ¿Cómo conseguir la hora, minutos y segundos
- 14. UILabel con la hora actual
- 15. Cómo obtener la fecha actual Hora formateada en Flex
- 16. ¿cómo puedo obtener la hora actual en C#?
- 17. cómo obtener la fecha y hora actual en SQL?
- 18. ¿Cómo obtener el sello de hora actual?
- 19. Cómo obtener segundos transcurridos desde la medianoche
- 20. Agregue x segundos a la fecha actual en Linux
- 21. obtener la hora, los minutos y los segundos actuales en iPhone
- 22. Obtenga la hora actual, incluidos los segundos de Sys.Date() en R
- 23. php obtener la hora actual de US/Eastern
- 24. ¿Hay alguna forma en XQuery de obtener la hora actual en milisegundos desde algún tiempo?
- 25. ¿Cómo puedo obtener fecha y hora actual en PHP
- 26. necesita para obtener fecha y hora actual en Java
- 27. Obtención de una marca de tiempo Unix en lenguaje Go (hora actual en segundos desde época)
- 28. C# - Formateo de la hora actual
- 29. Erlang y hora actual
- 30. manipular la hora actual en pruebas unitarias?
@robUK Solo en caso de que use este código en una aplicación multiproceso con muchos subprocesos obteniendo segundos de esta manera. Es probable que 'localtime' use un mutex global en su trabajo (mientras se accede al objeto locale global). Entonces, si lo usa en una función que a menudo se denomina subprocesos, pasará su tiempo esperando en 'pthread_mutex_unloc()' –
Es posiblemente peor que eso, @skwlisp. A menos que el valor de retorno sea un puntero a un objeto específico de subproceso, puede encontrarlo dañado.En un entorno enhebrado, probablemente debería usar las variantes "_r" de llamadas inseguras. Simplemente no quería complicar mi respuesta con un detalle posiblemente innecesario. – paxdiablo
He estado trabajando recientemente en una implementación de la Biblioteca Standard C y quería agregar algunos detalles. 'time()' no devuelve necesariamente el número de segundos desde la época (pero sí en la mayoría de las plataformas). Y 'tm_sec' puede variar de 0 a 61 (para dar cuenta de los segundos intercalares). – tomlogic