Biến thể nhỏ trên câu trả lời đầu tiên sử dụng sprintf thay vì ceil và POSIX. Cũng không sử dụng bất kỳ mô-đun CPAN bổ sung nào. Điều này làm tròn lên hoặc xuống để 6:07 = 6:00, 6:08 = 6:15, 6:22 = 6:15 và 6:23 = 6:30. Lưu ý rằng một giờ được thêm vào nếu các phút được làm tròn bằng 60. Tuy nhiên để làm điều này đúng cách, bạn sẽ phải sử dụng một hàm thời gian và địa phương để thêm giờ. tức là thêm một giờ có thể thêm một ngày, tháng hoặc năm.
#!/usr/bin/perl
my ($hr,$min) = split/:/,$time;
my $interimval = ($min/15);
my $rounded_min = sprintf "%.0f", $interimval;
$rounded_min = $rounded_min * 15;
if($rounded_min == 60)
{
$rounded_min = 0;
$hr++;
$hr = 0 if($hr == 24);
}
gọn gàng, nhưng sẽ trở nên 12:58 12:60 và không 13:00 :-( –
@ Øyvind Skaar: Cảm ơn vì đã chỉ cố định nó bây giờ – codaddict