Compartir a través de


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