http://qs1969.pair.com?node_id=778616


in reply to Re^2: display stuff based on systemclock
in thread display stuff based on systemclock

Forgetting we're dealing with times for a second, that's usually done using by subtracting the remainder of a division by your slot size.
$ perl -e'printf "%-3s %2d\n", "$_:", $_ - ($_ % 5) for 0..19' 0: 0 1: 0 2: 0 3: 0 4: 0 5: 5 6: 5 7: 5 8: 5 9: 5 10: 10 11: 10 12: 10 13: 10 14: 10 15: 15 16: 15 17: 15 18: 15 19: 15

The same trick can be applied to times.

$ perl -MPOSIX -le'@lt = localtime; $lt[0] -= $lt[0] % 5; print strfti +me "%Y-%m-%dT%H:%M:%S", @lt' 2009-07-09T12:14:40 $ perl -MPOSIX -le'@lt = localtime; $lt[0] -= $lt[0] % 5; print strfti +me "%Y-%m-%dT%H:%M:%S", @lt' 2009-07-09T12:14:40 $ perl -MPOSIX -le'@lt = localtime; $lt[0] -= $lt[0] % 5; print strfti +me "%Y-%m-%dT%H:%M:%S", @lt' 2009-07-09T12:14:45 $ perl -MPOSIX -le'@lt = localtime; $lt[0] -= $lt[0] % 5; print strfti +me "%Y-%m-%dT%H:%M:%S", @lt' 2009-07-09T12:14:45

The question is what do you want to happen if 60 isn't divisible by $delay?