Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

soustraction de time

46 views
Skip to first unread message

nicholls

unread,
Mar 17, 2004, 11:52:59 AM3/17/04
to
Bonjour,

J'aimerais soustraire des time pour connaitre le nombre le secondes

exemple :

$heure_fin = 20:45:00
$heure_debut = 22:00:00
$diff_en_sec = $heure_debut - $ heure_fin

diff_en_sec vaut 3600+15*60 soit 216900 secondes

J'ai chercher sur CPAN.org, les bibliotheques DATE::calc DATE:manip et
cie et j'ai pas trouvé mon bonheur.
Est ce que qq peut m'aider ?
Merci d'avance.

Greg

Paul GABORIT

unread,
Mar 17, 2004, 12:35:11 PM3/17/04
to

À (at) 17 Mar 2004 08:52:59 -0800,
nich...@ifrance.com (nicholls) écrivait (wrote):

> J'aimerais soustraire des time pour connaitre le nombre le secondes
>
> exemple :
>
> $heure_fin = 20:45:00
> $heure_debut = 22:00:00
> $diff_en_sec = $heure_debut - $ heure_fin

Le début est avant la fin ?

> diff_en_sec vaut 3600+15*60 soit 216900 secondes

Personnellement, pour ce calcul, j'obtiens 4500 secondes. Vous devriez changer
de calculette.

> J'ai chercher sur CPAN.org, les bibliotheques DATE::calc DATE:manip et
> cie et j'ai pas trouvé mon bonheur.

En lisant la doc de localtime (perldoc -f localtime), vous verrez qu'il est
évoqué un module appelé Time::Local qui peut vous aider :

use Time::Local;

my $heure_debut = "20:45:00";
my $heure_fin = "22:00:00";

my $time_fin =
timelocal((reverse split ':', $heure_fin), 1, 1, 2004);
my $time_debut =
timelocal((reverse split ':', $heure_debut), 1, 1, 2004);

$diff_en_sec = $time_fin - $time_debut;

PS: j'ai remis les heures dans le bon sens... à moins que vous sachiez que ce
n'est pas la même date. Dans ce cas, il vous faut préciser la date et ne pas
choisir la date arbitraire du 1 janvier 2004 comme je l'ai fait dans mon
exemple.

--
Paul Gaborit - <http://www.enstimac.fr/~gaborit/>
Perl en français - <http://www.enstimac.fr/Perl/>

Laurent Wacrenier

unread,
Mar 17, 2004, 12:44:12 PM3/17/04
to
nicholls <nich...@ifrance.com> écrit:

> J'aimerais soustraire des time pour connaitre le nombre le secondes
>
> exemple :
>
> $heure_fin = 20:45:00
> $heure_debut = 22:00:00

C'est du perl ?

> $diff_en_sec = $heure_debut - $ heure_fin

On ne peut pas connaitre le nombre de secondes entre deux heures sans
connaitre les jours, mois et années. Il peut y avoir des irrégularités
dans le calendrier (secondes intercallaires, heures d'été, etc.)

nicholls

unread,
Mar 18, 2004, 4:45:43 AM3/18/04
to
Merci pour tous, c vrai que ma calculette n'est pas terrible...

Maintenant, j'aimerais comparer des heures :

my $heure_debut_appel = "20::50:00";
my $debut_heure_pleine = "07::00:00";

if ($heure_debut_appel > $debut_heure_pleine) {print "heure pleine\n";
...}


Sniff, ca marche pas...

Est ce que qq connait une fonction qui le fait et qui permet aussi de
calculer la durée d'appel (soustraction de time).

Merci encore
Greg

Laurent Wacrenier

unread,
Mar 18, 2004, 5:54:32 AM3/18/04
to
nicholls <nich...@ifrance.com> écrit:

> Merci pour tous, c vrai que ma calculette n'est pas terrible...
>
> Maintenant, j'aimerais comparer des heures :
>
> my $heure_debut_appel = "20::50:00";
> my $debut_heure_pleine = "07::00:00";
>
> if ($heure_debut_appel > $debut_heure_pleine) {print "heure pleine\n";
> ...}

compare avec "gt" (comparaison de chaînes)

Frantz DORSEMAINE

unread,
Mar 19, 2004, 5:08:37 PM3/19/04
to
[Copie en courrier]

nich...@ifrance.com (nicholls) écrivait
news:f0ddef9b.04031...@posting.google.com:

Tu peux utiliser Date::Calc
avec ceci
Delta_DHMS
($Dd,$Dh,$Dm,$Ds) =
Delta_DHMS($year1,$month1,$day1, $hour1,$min1,$sec1,
$year2,$month2,$day2, $hour2,$min2,$sec2);

Le delta seras la différence entre tes 2 dates avec les heures. Si la
date est la même, il teresteras plus que les heures comme écart.

A+ Frantz

Julien Metayer

unread,
Mar 23, 2004, 1:39:13 PM3/23/04
to
DateManip gčre tout ca sans probleme. Read Again TFM (fonction deltatime) :)


"nicholls" <nich...@ifrance.com> a écrit dans le message de
news:f0ddef9b.04031...@posting.google.com...

0 new messages