I'm not sure why it isn't documented anywhere, but here is an example of how it is used, if that helps:
static float HowLong(
AbsoluteTime endTime,
AbsoluteTime bgnTime
)
{
AbsoluteTime absTime;
Nanoseconds nanosec;
absTime = SubAbsoluteFromAbsolute(endTime, bgnTime);
nanosec = AbsoluteToNanoseconds(absTime);
return (float) UnsignedWideToUInt64( nanosec ) / 1000.0;
}
UPDATE:
"The main reason I am interested in the docs is to find out how it differs from AbsoluteToDuration"
That's easier. AbsoluteToNanoseconds()
returns a value of type Nanoseconds
, which is really an UnsignedWide
struct.
struct UnsignedWide {
UInt32 hi;
UInt32 lo;
};
In contrast, AbsoluteToDuration()
returns a value of type Duration
, which is actually an SInt32
or signed long
:
typedef SInt32 Duration;
Durations
use a smaller, signed type because they are intended to hold relative times. Nanoseconds
, on the other hand, only make sense as positive values, and they can be very large, since computers can stay running for years at a time.