difftime
, , _difftime32
, _difftime64
Busca la diferencia entre dos horas.
Sintaxis
double difftime( time_t timeEnd, time_t timeStart );
double _difftime32( __time32_t timeEnd, __time32_t timeStart );
double _difftime64( __time64_t timeEnd, __time64_t timeStart );
Parámetros
timeEnd
Hora de finalización.
timeStart
Hora de inicio.
Valor devuelto
difftime
devuelve el tiempo transcurrido en segundos entre timeStart
y timeEnd
. El valor devuelto es un número de punto flotante de precisión doble. Puede que el valor devuelto sea 0, que indica un error.
Comentarios
La función difftime
calcula la diferencia entre los dos valores de tiempo suministrados, timeStart
y timeEnd
.
El valor de tiempo suministrado debe estar comprendido en el intervalo de time_t
. time_t
es un valor de 64 bits. Por consiguiente, el final del intervalo se ha ampliado de las 23:59:59 horas del 18 de enero de 2038, UTC a las 23:59:59 horas del 31 de diciembre de 3000. El límite inferior del intervalo de time_t
sigue siendo la medianoche del 1 de enero de 1970.
difftime
es una función insertada que se evalúa como _difftime32
o _difftime64
dependiendo de si _USE_32BIT_TIME_T
se define. Es posible usar _difftime32 y _difftime64 directamente para forzar el uso de un tamaño concreto del tipo de tiempo.
Estas funciones validan sus parámetros. Si cualquiera de los parámetros es cero o negativo, se invoca el controlador de parámetros no válidos, como se describe en Validación de parámetros. Si la ejecución puede continuar, estas funciones devuelven 0 y establecen errno
en EINVAL
.
De manera predeterminada, el estado global de esta función está limitado a la aplicación. Para cambiar este comportamiento, consulte Estado global en CRT.
Requisitos
Routine | Encabezado necesario |
---|---|
difftime |
<time.h> |
_difftime32 |
<time.h> |
_difftime64 |
<time.h> |
Para obtener más información sobre compatibilidad, consulte Compatibilidad.
Ejemplo
// crt_difftime.c
// This program calculates the amount of time
// needed to do a floating-point multiply 100 million times.
//
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <float.h>
double RangedRand( float range_min, float range_max)
{
// Generate random numbers in the half-closed interval
// [range_min, range_max). In other words,
// range_min <= random number < range_max
return ((double)rand() / (RAND_MAX + 1) * (range_max - range_min)
+ range_min);
}
int main( void )
{
time_t start, finish;
long loop;
double result, elapsed_time;
double arNums[3];
// Seed the random-number generator with the current time so that
// the numbers will be different every time we run.
srand( (unsigned)time( NULL ) );
arNums[0] = RangedRand(1, FLT_MAX);
arNums[1] = RangedRand(1, FLT_MAX);
arNums[2] = RangedRand(1, FLT_MAX);
printf( "Using floating point numbers %.5e %.5e %.5e\n", arNums[0], arNums[1], arNums[2] );
printf( "Multiplying 2 numbers 100 million times...\n" );
time( &start );
for( loop = 0; loop < 100000000; loop++ )
result = arNums[loop%3] * arNums[(loop+1)%3];
time( &finish );
elapsed_time = difftime( finish, start );
printf( "\nProgram takes %6.0f seconds.\n", elapsed_time );
}
Using random floating point numbers 1.04749e+038 2.01482e+038 1.72737e+038
Multiplying 2 floating point numbers 100 million times...
Program takes 3 seconds.
Vea también
Compatibilidad con cálculos matemáticos y el punto flotante
Administración de tiempo
time
, , _time32
, _time64