如何在Perl中将日期舍入到最近的15分钟间隔?

Bdf*_*dfy 7 perl datetime

我想将当前时间舍入到最近的15分钟间隔.
因此,如果它是当前的6:07,它将读6:15作开始时间.

我怎样才能做到这一点?

cod*_*ict 11

您可以将时间分为小时和分钟,然后使用以下ceil功能:

use POSIX;

my ($hr,$min) = split/:/,$time;    
my $rounded_min = ceil($min/15) * 15;

if($rounded_min == 60) {
   $rounded_min = 0;
   $hr++;
   $hr = 0 if($hr == 24); 
}
Run Code Online (Sandbox Code Playgroud)


Dav*_*oss 8

距离6:07最近的15分钟是6:00,而不是6:15.您想要最近的15分钟间隔或下一个15分钟的间隔吗?

假设它是最近的,这样的东西可以满足您的需求.

#!/usr/bin/perl

use strict;
use warnings;

use constant FIFTEEN => (15 * 60);

my $now = time;

if (my $diff = $now % FIFTEEN) {
  if ($diff < FIFTEEN / 2) {
    $now -= $diff;
  } else {
    $now += (15*60) - $diff;
  }
}

print scalar localtime $now, "\n";
Run Code Online (Sandbox Code Playgroud)

  • `FIFTEEN`对于一个等于900的常量来说是一个非常糟糕的名字.:) (8认同)