Calculer une durée avec date()

Eléphant du PHP | 256 Messages

19 juil. 2011, 14:48

Bonjour,

Je me bats toujours avec mes problèmes de date.

Je veux calculer une durée en heures, minutes et secondes à partir d'une durée en secondes.

D'abord, j'ai employé une syntaxe comme...
$delta = 18137:
$delta_hours = intval($delta / 3600);
$delta_minutes = intval(($delta % 3600) / 60);
$delta_seconds = ($delta % 3600) % 60;
qui fonctionne correctement.

Mais, en continuant à réfléchir, je me suis dit que la fonction date ferait le calcul seule, solution bien plus intelligente, n'est-ce pas ? :D

Or, il y a une bizarrerie. Quand j'utilise...
$delta = 18137;
$date= date(('H:i:s'), $delta);
Php me rajoute toujours une heure fictive. Je peux contourner le problème avec ($delta - 3600), mais cette solution est bricolée.

Selon vous, est-il licite d'utiliser la fonction date ici ? N'ai-je pas compris la documentation ?

Merci. :D

Cordialement,

Gaspard
Modifié en dernier par Castor Gaspard le 19 juil. 2011, 16:36, modifié 1 fois.

Eléphant du PHP | 86 Messages

19 juil. 2011, 15:40

Bonjour,

Le second paramètre à passer à la fonction date doit être un timestamp (le nombre de secondes depuis le 1er janvier 1970).
Ainsi, tu ne peux pas utiliser la fonction date de cette façon.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

19 juil. 2011, 15:41

Ce serait pas une question d'heure d'été ?

Et si tu utilises gmdate() au lieu de date() ?
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 256 Messages

19 juil. 2011, 16:30

Bonjour,

@ Skikit. La documentation ne précise pas le point de départ d'un Timestamp, me semble-t-il. De plus, la fonction peut être commode pour convertir des jours, des heures...

@ Ryle. Tu as raison comme d'habitude. gmdate() permet de contourner mon problème des 3600 secondes qui se promenaient. Merci. :mrgreen:

Cordialement,

Gaspard