1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
| #!/usr/bin/perl
# But : Calculer le nombre d'années, mois, jours, heures, minutes et secondes
# à partir d'une durée en secondes.
# USAGE : perl programme <DUREE en secondes>
use strict;
use warnings;
print time_format( $ARGV[0] ), "\n";
sub time_format {
my $totalsecondes = shift;
return '0 second' if (not defined $totalsecondes or $totalsecondes == 0);
my $message = '';
my ( $nbr_annees, $nbr_mois, $nbr_jours, $nbr_heures, $nbr_minutes, $nbr_secondes ) = ();
# Annees
my $duree_an = 60 * 60 * 24 * 30.41 * 12;
$nbr_annees = int( $totalsecondes / $duree_an );
if ( $nbr_annees > 0 ) {
$totalsecondes = $totalsecondes % $duree_an;
$message .= ( $nbr_annees == 1 ) ? "$nbr_annees year " : "$nbr_annees years ";
}
# Mois
my $duree_mois = 60 * 60 * 24 * 30.41;
$nbr_mois = int( $totalsecondes / $duree_mois );
if ( $nbr_mois > 0 ) {
$totalsecondes = $totalsecondes % $duree_mois;
$message .= ( $nbr_mois == 1 ) ? "$nbr_annees month " : "$nbr_annees months ";
}
# Jours
my $duree_jours = 60 * 60 * 24;
$nbr_jours = int( $totalsecondes / $duree_jours );
if ( $nbr_jours > 0 ) {
$totalsecondes = $totalsecondes % $duree_jours;
$message .= ( $nbr_jours == 1 ) ? "$nbr_jours day " : "$nbr_jours days ";
}
# Heures
my $duree_heures = 60 * 60;
$nbr_heures = int( $totalsecondes / $duree_heures );
if ( $nbr_heures > 0 ) {
$totalsecondes = $totalsecondes % $duree_heures;
$message .= ( $nbr_heures == 1 ) ? "$nbr_heures hour " : "$nbr_heures hours ";
}
# Minutes
my $duree_minutes = 60;
$nbr_minutes = int( $totalsecondes / $duree_minutes );
if ( $nbr_minutes > 0 ) {
$totalsecondes = $totalsecondes % $duree_minutes;
$message .= ( $nbr_minutes == 1 ) ? "$nbr_minutes minute " : "$nbr_minutes minutes ";
}
# Secondes
if ( $totalsecondes > 0 ) {
$message .= ( $totalsecondes == 1 ) ? "$totalsecondes seconde " : "$totalsecondes secondes ";
}
return $message;
} |
Partager