Comment convertir une chaîne de date Mon, 24 May 2010 17:54:00 GMT
du flux RSS à un horodatage en PHP?Convertir un pubDate en un horodatage
Répondre
Vous pouvez utiliser la fonction intégrée strtotime()
. Il prend une chaîne de date comme premier argument et renvoie un horodatage Unix.
Essayez ceci:
$pubDate = $item->pubDate;
$pubDate = strftime("%Y-%m-%d %H:%M:%S", strtotime($pubDate));
Excelent! Fonctionne comme un charme – Borjante
strtotime
ne fonctionne pas avec des fuseaux horaires différents.
Je viens d'écrire cette fonction pour convertir RSS pubDates à horodatages qui ne prend en compte les différents fuseaux horaires:
function rsstotime($rss_time) {
$day = substr($rss_time, 5, 2);
$month = substr($rss_time, 8, 3);
$month = date('m', strtotime("$month 1 2011"));
$year = substr($rss_time, 12, 4);
$hour = substr($rss_time, 17, 2);
$min = substr($rss_time, 20, 2);
$second = substr($rss_time, 23, 2);
$timezone = substr($rss_time, 26);
$timestamp = mktime($hour, $min, $second, $month, $day, $year);
date_default_timezone_set('UTC');
if(is_numeric($timezone)) {
$hours_mod = $mins_mod = 0;
$modifier = substr($timezone, 0, 1);
$hours_mod = (int) substr($timezone, 1, 2);
$mins_mod = (int) substr($timezone, 3, 2);
$hour_label = $hours_mod>1 ? 'hours' : 'hour';
$strtotimearg = $modifier.$hours_mod.' '.$hour_label;
if($mins_mod) {
$mins_label = $mins_mod>1 ? 'minutes' : 'minute';
$strtotimearg .= ' '.$mins_mod.' '.$mins_label;
}
$timestamp = strtotime($strtotimearg, $timestamp);
}
return $timestamp;
}
Cela a fonctionné parfaitement. Je vous remercie! –
La fonction rsstotime() ne fonctionnait pas correctement si le pubDate dans l'alimentation rss avait fuseau horaire autre que +0000. Le problème était avec le modificateur $, il a dû être inversé. Pour résoudre ce problème deux lignes devaient être ajoutées, de sorte que la ligne:
$modifier = substr($timezone, 0, 1);
est devenu:
$modifier = substr($timezone, 0, 1);
if($modifier == "+"){ $modifier = "-"; } else
if($modifier == "-"){ $modifier = "+"; }
Juste pour clarifier la modification - par exemple si le pubDate était mer, le 22 mai 2013 17:09:36 +0200 puis la ligne
$timestamp = strtotime($strtotimearg, $timestamp
offsetted le temps de deux heures à ne pas remis à zéro +0000 timezone comme prévu.
Le Mer, 22 Mai 2013 17:09:36 +0200 montre que l'heure présentée ici est dans le fuseau horaire GMT +2.
Le code ne fonctionne pas correctement et a ajouté deux heures supplémentaires pour le temps, de sorte que le temps est devenu Mer, le 22 mai 2013 19:09:36 +0000, au lieu mer, 22 mai 2013 15:09:36 +0000 comme il se doit.
function pubdatetotime($pubDate) {
$months = array('Jan' => '01', 'Feb' => '02', 'Mar' => '03',
'Apr' => '04', 'May' => '05', 'Jun' => '06',
'Jul' => '07', 'Aug' => '08', 'Sep' => '09',
'Oct' => '10', 'Nov' => '11', 'Dec' => '12');
$date = substr($pubDate, 5,11);
$year = substr($date, 7,4);
$month = substr($date, 3,3);
$d = substr($date, 0,2);
$time = substr($pubDate, 17,8);
return $year."-".$months[$month]."-".$d." ".$time;
}
Essayez cette fonction
- 1. Comment convertir un horodatage unix en horodatage ISO8601 en PHP?
- 2. Comment convertir un horodatage GMT en horodatage Unix (javascript)
- 3. Convertir rss pubDate à EST en .NET
- 4. Convertir en horodatage UTC
- 5. Comment convertir un horodatage ISO8601 en heure unix en Perl?
- 6. Comment convertir un horodatage log4j en millisecondes en Perl?
- 7. Convertir une chaîne de date en un horodatage Unix
- 8. PHP: Comment convertir un horodatage de serveur en fuseau horaire?
- 9. Comment convertir un horodatage en chaîne dans Liquid?
- 10. iPhone: Conversion d'un horodatage Oracle en NSDate ou en un horodatage Unix (par exemple en double)
- 11. Twitter RSS pubDate Format
- 12. Convertir un horodatage UNIX en "Aujourd'hui à: currentTime" en utilisant Java
- 13. Comment convertir l'heure locale en horodatage unix en Perl?
- 14. Convertir le format de date horodatage mysql
- 15. Comment convertir un horodatage mySQL en RFC-822 à l'aide de Perl?
- 16. Fonction php pour convertir un horodatage Unix en minutes ou heures ou jours comme digg?
- 17. Convertir un horodatage Unix au format humain en Django avec Python
- 18. MySQL - Convertir MM/DD/YY en horodatage Unix
- 19. Aide avec un horodatage MySQL Unix Requête
- 20. Conversion de datetime MySQL en RSS pubDate en PHP?
- 21. Effacer un fichier sans modifier son horodatage
- 22. Fonction qui crée un horodatage dans C#
- 23. Comment générer un horodatage dans MSBuild
- 24. manière portable pour créer un horodatage en c/C++
- 25. Comment signer des données en toute sécurité avec un horodatage?
- 26. Obtenir un horodatage en C# quand le WinCE démarré
- 27. Ajouter 13 heures à un horodatage
- 28. Comment modifier un horodatage time_t dans C?
- 29. Comment convertir un sqlite3_int64 en un long?
- 30. Comment convertir un caractère * en un int?
Il ressemble à strtotime donnent des résultats étranges lorsque la chaîne contient le fuseau horaire. Par exemple avec "Sam, 21 Sep 2010 00:00 GMT" Je reçois 1285372800 (25-09-2010) –