web-dev-qa-db-fra.com

Google Sitemap Date Format

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>
17
user1329212

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()

33
Dunhamzzz

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

LA SOURCE

19
Erfan Safarpoor

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
16
NXT

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());
10
xiatica

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.

3
AdamJones

Vous avez le choix entre plusieurs formats . En utilisant le paramètre c avec la fonction date() , vous obtiendrez le format recommandé.

2
John Conde

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

1
user3152317

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"
1
Alex K

avec moment.js;

moment().format('YYY-MM-DDTHH:mm:ssZ')
0
Ahmet Şimşek