Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

what is the difference between difftime and '-'?

Tags:

I have 2 variables of type time_t - varEnd and varStart. Now in order to see the difference between them Either I can do

varEnd - varStart;  

or

difftime(varEnd, varStart); 

and both returns number of seconds.

Please let me know, if they have any difference? or which is the recommended one?

like image 411
Naresh Avatar asked Dec 13 '12 08:12

Naresh


People also ask

What does Difftime mean in R?

Basic R Syntax: The difftime R function calculates the time difference of two date or time objects.

What is Difftime?

The difftime() function returns the elapsed time in seconds from time1 to time2 as a double precision number.

What does having a negative value of Diff_time actually mean?

The system returns a positive value if Time1 is earlier than Time2. The result is negative if Time2 is earlier than Time1.

What is Difftime in C?

difftime() is a C Library function. It returns the difference in time, in seconds(i.e. ending time – starting time).


2 Answers

The language specifies that time_t is an arithmetic type capable of representing times. It doesn't require it to represent times in any particular way.

If time_t represents time as the number of seconds since some moment, the - operator will correctly compute the difference in seconds between two time_t values.

If it doesn't (say, if the granularity is one millisecond, or if the bits of a time_t are divided into groups representing years, months, days, etc.), then the - operator can yield meaningless results.

The difftime() function, on the other hand, "knows" how a time_t represents a time, and uses that information to compute the difference in seconds.

On most implementations, simple subtraction and difftime() happen to do the same thing -- but only difftime() is guaranteed to work correctly on all implementations.

Another difference: difftime() returns a result of the floating-point type double, while "-" on time_t values yields a result of type time_t. In most cases the result will be implicitly converted to the type of whatever you assign it to, but if time_t happens to be an unsigned integer type, subtraction of a later time from an earlier time will yield a very large value rather than a negative value. Every system I've seen implements time_t as a 32-bit or 64-bit signed integer type, but using an unsigned type is permitted -- one more reason that simple subtraction of time_t values isn't necessary meaningful.

like image 141
Keith Thompson Avatar answered Oct 05 '22 08:10

Keith Thompson


difftime() returns a floating point double, just subtracting them doesn't unless you cast them to double first.
source: here

like image 42
Kevin Avatar answered Oct 05 '22 07:10

Kevin