Bonjour,
Je vous propose un code pour convertir une durée qui est en secondes en un texte donnant le nombre d'années, de mois, jours, heures, minutes et secondes.
Utilisation : perl programme.pl <duree en secondes>.
Bien évidement, le code peut être amélioré, donc n'hésitez pas à faire des remarques, propositions...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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