Velocity Reviews > rolling back 24 hour times

# rolling back 24 hour times

marty
Guest
Posts: n/a

 11-12-2003
As part of an assignment I need to calculate a 24 hour time by subtracting a
one time from another e.g. if the user enters 1.00 as the time and 1.30 as
the time to subtract the returned time is 23.30 the previous day.

This is straightforward when dealing with positive times. But when negative
times are introduced (as above) it all gets tricky.

I'd originally thought that a lookup table of times against a corresponding
negative time might be useful. But this wouldn't be flexible enough to
handle anything later than 24 hours.

Is there a mathematical way to calculate this? I don't want the code written
for me, just a few ideas.

TIA

Guest
Posts: n/a

 11-12-2003
On Wed, 12 Nov 2003 08:48:14 +0000, marty wrote:

> Is there a mathematical way to calculate this? I don't want the code written
> for me, just a few ideas.

Look at the modulo operator (%) in your textbook.

--
NPV

"the large print giveth, and the small print taketh away"
Tom Waits - Step right up

Simon Biber
Guest
Posts: n/a

 11-12-2003
"marty" <rmartin@n^t^l^w^o^r^l^d^.^c^o^m^> wrote:
> As part of an assignment I need to calculate a 24 hour time by
> subtracting a one time from another e.g. if the user enters 1.00
> as the time and 1.30 as the time to subtract the returned time
> is 23.30 the previous day.

[snip]
> Is there a mathematical way to calculate this? I don't want the
> code written for me, just a few ideas.

You can regard both the time and the offset as an integer number of
minutes before or after midnight, and just add the two integers.

Then normalise the result into hours and minutes (first adding 24 hours
to cancel out any negative values).

Brought to you by the numbers 60 and 1440, and the operators +, *, /
and especially %.

--
Simon.

Al Bowers
Guest
Posts: n/a

 11-12-2003

marty wrote:
> As part of an assignment I need to calculate a 24 hour time by subtracting a
> one time from another e.g. if the user enters 1.00 as the time and 1.30 as
> the time to subtract the returned time is 23.30 the previous day.
>
> This is straightforward when dealing with positive times. But when negative
> times are introduced (as above) it all gets tricky.
>
> I'd originally thought that a lookup table of times against a corresponding
> negative time might be useful. But this wouldn't be flexible enough to
> handle anything later than 24 hours.
>
> Is there a mathematical way to calculate this? I don't want the code written
> for me, just a few ideas.
>

You might be able to substract or add to bring the values in range.

double time = 1.00; /* represents 1 am */

time-=50.50; /* substact 50.5 hours */
while(time < 24.0) time+=24.0;
while(time > 24.0) time -=24.0;

--
Al Bowers
Tampa, Fl USA
mailto: http://www.velocityreviews.com/forums/(E-Mail Removed) (remove the x to send email)
http://www.geocities.com/abowers822/

marty
Guest
Posts: n/a

 11-12-2003

"Al Bowers" <(E-Mail Removed)> wrote in message
news:botqjr\$1hn89g\$(E-Mail Removed)-berlin.de...
>
>
> marty wrote:
> > As part of an assignment I need to calculate a 24 hour time by

subtracting a
> > one time from another e.g. if the user enters 1.00 as the time and 1.30

as
> > the time to subtract the returned time is 23.30 the previous day.
> >
> > This is straightforward when dealing with positive times. But when

negative
> > times are introduced (as above) it all gets tricky.
> >
> > I'd originally thought that a lookup table of times against a

corresponding
> > negative time might be useful. But this wouldn't be flexible enough to
> > handle anything later than 24 hours.
> >
> > Is there a mathematical way to calculate this? I don't want the code

written
> > for me, just a few ideas.
> >

>
> You might be able to substract or add to bring the values in range.
>
> double time = 1.00; /* represents 1 am */
>
> time-=50.50; /* substact 50.5 hours */
> while(time < 24.0) time+=24.0;
> while(time > 24.0) time -=24.0;
>
> --
> Al Bowers
> Tampa, Fl USA
> mailto: (E-Mail Removed) (remove the x to send email)
> http://www.geocities.com/abowers822/
>

That was very useful, thanks all.

Eric Sosman
Guest
Posts: n/a

 11-12-2003
Al Bowers wrote:
>
> marty wrote:
> > As part of an assignment I need to calculate a 24 hour time by subtracting a
> > one time from another e.g. if the user enters 1.00 as the time and 1.30 as
> > the time to subtract the returned time is 23.30 the previous day.
> >
> > This is straightforward when dealing with positive times. But when negative
> > times are introduced (as above) it all gets tricky.
> >
> > I'd originally thought that a lookup table of times against a corresponding
> > negative time might be useful. But this wouldn't be flexible enough to
> > handle anything later than 24 hours.
> >
> > Is there a mathematical way to calculate this? I don't want the code written
> > for me, just a few ideas.
> >

>
> You might be able to substract or add to bring the values in range.
>
> double time = 1.00; /* represents 1 am */
>
> time-=50.50; /* substact 50.5 hours */
> while(time < 24.0) time+=24.0;
> while(time > 24.0) time -=24.0;

The fmod() function might be convenient here.

Also, note that simple arithmetic will not always
yield the correct result, because not all days are 24.0
hours long. Many parts of the world observe a seasonal
variation involving one 23-hour and one 25-hour day per
year, and *all* of the world (except the POSIX committee,
I've heard) admits the introduction or deletion of leap
seconds twice yearly.

--
(E-Mail Removed)