Beefy Boxes and Bandwidth Generously Provided by pair Networks
Just another Perl shrine
 
PerlMonks  

Re^3: Round time to nearest 15 or 30 minutes

by DrHyde (Prior)
on Apr 25, 2006 at 10:05 UTC ( [id://545517]=note: print w/replies, xml ) Need Help??


in reply to Re^2: Round time to nearest 15 or 30 minutes
in thread Round time to nearest 15 or 30 minutes

If you want the nearest 15 minute boundary, then the code is wrong. It will give you the previous 15 minute boundary.

You need to:

  • add $interval/2 minutes to the time;
  • subtract the remainder you'd get when dividing by $interval minutes.

Note that the modulus operator % only works with integers. In practice, you can probably ignore the fraction of a minute that gets thrown away. If you can't, then you'll need to write your own remainder function.

Replies are listed 'Best First'.
Re^4: Round time to nearest 15 or 30 minutes
by bill_mcgonigle (Acolyte) on May 18, 2010 at 01:04 UTC
    Ah, this was very helpful, thanks. Not being too clever in these matters, I didn't quite understand the above, but it got me close enough to experiment successfully (though I don't quite get the second bullet item). In my case I was after an offset to add to a unixtime, so that's how the code is oriented.
    for (my $i = 0; $i < 60; $i++) { my $offset = getOffsetToNearestInterval($i,15); print "$i: " . ($i + $offset) . ' (' . $offset . ')' . "\n"; } sub getOffsetToNearestInterval { my $number = shift; my $interval = shift; my $nearest_interval = ( $interval * int( ($number + ($interval/2) + ) / $interval) ); my $offset_to_interval = $nearest_interval - $number; return $offset_to_interval; }
    Hope this helps the next guy stumbling on this thread.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://545517]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others sharing their wisdom with the Monastery: (2)
As of 2024-04-25 06:34 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found