2009-12-01 7 views
4

Jetez un oeil sur le code ci-dessous:problème int à la date de PHP

$t=77; 
date("H:i:s", $t); 

Il retourne

21:01:17 

Le résultat correct, bien sûr, devrait être quelque chose comme 0:01:17. La valeur de $ t est en effet une valeur en secondes renvoyée par l'API GData de YouTube, trought($videoEntry->getVideoDuration()).

Comment ce problème peut-il être réparé?

Répondre

8

La date est spécifique au fuseau horaire. Vous devez le définir sur GMT pour obtenir les résultats souhaités.

date_default_timezone_set('GMT'); 
$t=77; 
echo date("H:i:s", $t); 
+0

Ok GMT ou UTC fonctionne bien. thx –

-1

Essayez de définir le fuseau horaire GMT.

date_default_timezone_set('Europe/London'); 
+1

Est-ce que Londres n'est pas à un autre moment que GMT certaines parties de l'année? – Atli

+0

Réglage à Europe/Londres revient 01:01:17. Voir la solution ci-dessous. –

2

Le deuxième argument à ce jour() est un horodatage unix - en d'autres termes, il est un certain nombre de secondes depuis le 1er janvier 1970, ajusté à ce que PHP est défini sur un fuseau horaire (peut être réglé avec date_default_timezone_set).

-1

Je pense que si vous obtenez des valeurs en seconde, alors vous devriez utiliser la fonction mktime, puis il donnera un résultat correct. Par exemple:

$t=77; 
echo date("H:i:s", mktime(0,0,$t)); 
+1

Salut. La fonction 'mktime' crée un horodatage - le nombre de secondes écoulées depuis le' 1970-01-01'- et l'utiliser avec seulement une valeur de secondes crée simplement un horodatage pour aujourd'hui, à ce moment précis. Par exemple. '2009-12-01 00: 01: 17' * (en utilisant GMT) *. Lequel, si vous êtes seulement intéressé par les valeurs de temps, ne change rien. Ce que vous avez posté est effectivement équivalent à '$ t = 77; date d'écho ("H: i: s", $ t); – Atli

+0

Salut Atli ... vous avez raison ... merci pour la clarification –