2010-07-08 9 views
0

Donc, j'ai beaucoup de problèmes avec ce petit morceau de code. Un exemple d'horodatage est le suivant: '1278509422000' .. le problème est qu'il se présente sous la forme d'une chaîne et que je dois le convertir en quelque sorte. Je connais le problème avec millisecondes et j'ai essayé de diviser par 1000 et beaucoup plus (intval/floatval) mais il ne deviendra juste pas une valeur de date-heure correcte.Comment analyser ZendGData Picasa GPhotoTimestamps en PHP

Zend_Loader::loadClass('Zend_Gdata_Photos'); 
Zend_Loader::loadClass('Zend_Gdata_ClientLogin'); 
Zend_Loader::loadClass('Zend_Gdata_AuthSub'); 

$gp = new Zend_Gdata_Photos(Zend_Gdata_AuthSub::getHttpClient($data->token), "Bla"); 
try { 
    $userFeed = $gp->getUserFeed("default"); 
    foreach ($userFeed as $userEntry) { 
     $album = $userEntry->getGphotoName(); 
     try { 
      $query = $gp->newAlbumQuery(); 
      $query->setUser("default"); 
      $query->setAlbumName($album); 
      $albumFeed = $gp->getAlbumFeed($query); 
      foreach ($albumFeed as $photo) { 
       $time = date('Y-m-d H:m:s', $photo->getGphotoTimestamp()); 
      } 
     } catch(Exception $e) { 
     } 
    } 
} catch(Exception $e) { 
} 

Répondre

1

Ok .. Alors, il se trouve que, ZendGData est un objet très très orienté et la fonction retourne getGphotoTimestamp() un objet au lieu de et horodatage. Je n'ai pas remarqué cela à cause de la place hors du chemin le code a dans le projet (dans un travail gearman) et le fait que l'objet implémente un __toString() qui retourne la chaîne rep de l'horodatage! Utiliser floatval (strval (...)) a fait l'affaire!

0
$time = date('Y-m-d H:m:s', intval($photo->getGphotoTimestamp())/1000); 
+0

:) bien essayé, mais c'est exactement ce que je voulais dire quand je dit que je connaissais le problème millisecondes .. Voici les 2 captures d'écran à montrez-vous que je l'ai au moins essayé .. Code: http://moby.to/lcbclk DB: http://moby.to/tu0zh0 ... merci d'essayer si! –

+0

1) Essayez intval ($ photo-> getGphotoTimestamp())/1000) au lieu de floatval ($ photo-> getGphotoTimestamp()/1000)) 2) User intval au lieu de flaotval – wspruijt

+0

:/en fait c'était une suggestion faite par un collègue .. j'ai essayé les deux maintenant et les deux ne donnent pas la bonne réponse .. –

0

Le code suivant a fonctionné !! acclamations ...

$date_and_time = date('Y-m-d H:m:s', floatval(strval($entry->getGphotoTimestamp();)/1000)); 

Bonne programmation .. :)