2009-09-30 11 views
0

Je viens de recevoir des tweets utilisant leur flux XML, et ont obtenu la date/temps comme siPHP date get comme Unix Epoch temps

Mar Sep 29 22:30:51 +0000 2009

J'ai essayé d'utiliser strtotime() à ce sujet, mais cela ne donnait pas les bons résultats.

Plus tard, je l'utilisation

echo date($dateTimeFormat, $twitterUnixTime); 

Je sais que je pourrais utiliser une expression régulière, mais des regards de celui-ci ce sera compliqué (et vous devrez utiliser un rappel, pour convertir « sept » à un chiffre D'après ce que je comprends, strtotime() peut facilement faire des dates MySQL (2009-09-30 13:00:00) et d'autres (généralement à partir de flux RSS)

Que puis-je faire ici pour obtenir cette date/heure comme un temps d'époque Unix?

MISE À JOUR

Voici mon code

$dateTime = $status->created_at; // Tue Sep 29 22:30:51 +0000 2009 

$date = strtotime($dateTime); 

$dateTimeFormat = 'j/n/y g:ia'; 

echo date($dateTimeFormat, $date); // 2/2/09 12:01am 

MISE À JOUR

gars Désolé, entièrement ma faute. J'ai une variable erronée. Merci pour vos réponses!

+0

' strtotime() 'a travaillé juste une amende pour moi. –

+0

Quelle version de PHP utilisez-vous? Dans mon expérience, certaines versions plus anciennes contiennent des versions de strtotime() qui sont légèrement plus compliquées ... – Charles

Répondre

3

Quel est exactement le problème que vous rencontrez avec strtotime?

En utilisant ce code:

$str = 'Tue Sep 29 22:30:51 +0000 2009'; 
$ts = strtotime($str); 

var_dump(date('Y-m-d H:i:s', $ts)); 

Je reçois cette sortie:

string '2009-09-30 00:30:51' (length=19) 

Alors, mal de 2 heures - est que le genre de problème que vous avez? Si oui, cela peut être un problème de fuseau horaire: je suis en France, et il y a une différence de 2 heures avec l'heure GMT/UTC.


Modification locale avec la fonction date_default_timezone_set(pour définir celui qui est dans le fuseau horaire de GMT), avec cette ligne avant que les précédentes:

date_default_timezone_set('Europe/London'); 

obtient ce que la sortie:

string '2009-09-29 23:30:51' (length=19) 

Quel genre de ressembler au résultat souhaité? Vous pouvez également modifier le paramètre date.timezone en php.ini; mais pourrait avoir d'autres impacts, donc pas sûr que ce soit une bonne idée ...

Peut-être que vous pouvez utiliser le « UTC » fuseau horaire, btw, comme ceci:

date_default_timezone_set('UTC'); 

Compte tenu de ce que nous sommes prêts à obtenir/moyenne, il pourrait en fait être une meilleure idée ...

+0

Vous pouvez également utiliser 'gmdate()' pour obtenir la date GMT/UTC sans changer les fuseaux horaires. –

+0

"Alors, mal par 2 heures?" Ce n'est pas faux du tout, il montre exactement le même moment dans votre fuseau horaire – nickf

+0

par "mauvais", je voulais dire "pas ce que vous pourriez attendre", en fait - merci à propos de gmdate! –