Variation mineure de la première réponse en utilisant sprintf au lieu de ceil et POSIX. N'utilise pas non plus de modules CPAN supplémentaires. Cela arrondit vers le haut ou vers le bas si 6:07 = 6:00, 6:08 = 6:15, 6:22 = 6:15 et 6:23 = 6:30. Notez qu'une heure est ajoutée si les minutes arrondies sont égales à 60. Cependant, pour le faire correctement, vous devez utiliser une fonction timelocal et une heure locale pour ajouter l'heure. c'est-à-dire ajouter une heure peut ajouter un jour, un mois ou une année.
#!/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);
}
propre, mais deviendront 12:58 12:60 13:00 et non :-( –
@ Øyvind Skaar: Merci de remarquer fixe maintenant – codaddict