Vous devez convertir des chaînes de date en objets DateTime d'abord, en utilisant un format personnalisé ou l'un des nombreux DateTime :: Format :: * bibliothèques disponibles. Vous utilisez un format couramment utilisé dans les bases de données, donc j'ai choisi le formatter MySQL (puis défini une formatter durée personnalisée pour le résultat final, copié des exemples DateTime::Format::Duration):
use DateTime;
use DateTime::Format::MySQL;
use DateTime::Format::Duration;
my $date = "2010-08-02 09:10:08";
my $dt1 = DateTime->now(time_zone => 'floating', formatter => 'DateTime::Format::MySQL');
my $dt2 = DateTime::Format::MySQL->parse_datetime($date);
my $duration = $dt1 - $dt2;
my $format = DateTime::Format::Duration->new(
pattern => '%Y years, %m months, %e days, %H hours, %M minutes, %S seconds'
);
print $format->format_duration($duration);
# prints:
# 0 years, 00 months, 0 days, 00 hours, 421 minutes, 03 seconds
définissez votre $ data var comme datetime: my $ date = DateHeure-> nouvelle (année => 2010, mois => 8, jour => 2, heure => 9, minute => 10, seconde => 8); – benzebuth