J'ai besoin du format de date pour les sitemaps en php.
Comment puis je faire ça ?
Cette sortie est-elle correcte?
<lastmod>2012-08-02EEST18:01:18+03:00</lastmod>
Si vous avez l'horodatage, vous pouvez formater la date correctement comme ceci:
<lastmod><?php echo date('c', $timestamp); ?></lastmod>
L’horodatage pourrait être time()
(pour l’heure actuelle) ou une autre méthode permettant de récupérer un horodatage unix tel que strtotime()
Pour formater l'horodatage actuel dans le codage Datetime W3C (utilisé dans les fichiers sitemap.xml), utilisez les paramètres suivants.
echo date('Y-m-dTH:i:sP', time());
Depuis PHP5, vous pouvez également utiliser le caractère de format c pour imprimer exactement la même chaîne.
echo date('c',time());
Ceux-ci afficheraient les éléments suivants:
2009-04-03T11:49:00+01:00
Pour convertir le format datetime de MySQL vers celui requis pour lastmod in sitemaps, utilisez simplement le code PHP ci-dessous.
$lastmod = '2012-11-28 10:53:17'; //MySQL datetime format
$datetime = new DateTime($lastmod);
$result = $datetime->format('Y-m-d\TH:i:sP');
echo $result; //2012-11-28T10:53:17+01:00
Selon Google , il s'agit d'un champ facultatif qui, s'il est fourni, doit être formaté comme suit:
YYYY-MM-DDThh:mmTZD
L'exportation par défaut d'une date/heure SQL est dépend du paramètre de langue de votre serveur , et peut inclure des espaces et des caractères TZD caractérisés, tels que:
2014-09-19 10:33:05 UTC
Le W3 spécifie que TZD peut être formaté selon l'une des trois options
TZD = indicatif du fuseau horaire (Z ou + hh: mm ou -hh: mm)
Tous les espaces de votre mise en forme par défaut doivent être supprimés; le caractère 'T' doit être inséré avant l'heure et le TZD doit correspondre à l'un des types pris en charge.
Par conséquent, pour formater l'horodatage actuel, utilisez les paramètres suivants.
echo date('Y-m-dTH:i:sP', time());
Depuis PHP5, vous pouvez également utiliser le caractère de format c pour imprimer exactement la même chaîne.
echo date('c',time());
Vous obtenez cette sortie parce que vous avez utilisé l’ancienne chaîne d’horodatage recommandée
Y-m-dTH:i:sP.
Cependant, ce dont vous avez besoin est
Y-m-d\TH:i:sP
Cette barre oblique unique fera la différence. À un moment donné, un T majuscule est devenu un caractère spécial dans le symbole de code temporel PHP. Par conséquent, si vous n'échappez pas au T, vous obtiendrez exactement ce que vous signalez.
Vous avez le choix entre plusieurs formats . En utilisant le paramètre c
avec la fonction date()
, vous obtiendrez le format recommandé.
supprimer "EES" Le mien est comme ceci 2013-12-26T19: 00: 00-05: 00 et ça marche http: //www.industry-automation -parts.com/1_e_0_sitemap.xml
Je sais que la question portait sur PHP, mais j'ai trouvé cette page googler pour Node/JavaScript. Donc, l'équivalent le plus proche est Date.toISOString()
:
var d = new Date();
d.toISOString(); // "2017-04-19T07:23:16.040Z"
avec moment.js;
moment().format('YYY-MM-DDTHH:mm:ssZ')