2012-08-02 22 views
16

Ho bisogno del formato della data per le Sitemap in PHP.Formato data Sitemap di Google

Come posso farlo?

Questa uscita è corretta?

<lastmod>2012-08-02EEST18:01:18+03:00</lastmod> 
+0

intendi le sitemap prese dai bot? –

risposta

27

Se avete il timestamp è possibile formattare la data in modo corretto in questo modo:

<lastmod><?php echo date('c', $timestamp); ?></lastmod> 

Tempo timbro potrebbe essere time() (per ora attuale) o qualche altro metodo di andare a prendere un tiemstamp unix come strtotime()

+0

Sto ricevendo i dati lastmod dal database. ed è il formato datetime. Sto usando lo strtotime per convertire. se il tipo è corretto per google funziona. Grazie. –

11

Per convertire da un formato datetime di MySQL a quello necessario per lastmod in sitemap, è sufficiente utilizzare il codice PHP di seguito.

$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 
14

Per formattare il timestamp corrente a codifica W3C Datetime (come usato in file sitemap.xml) utilizzare i seguenti parametri.

echo date('Y-m-dTH:i:sP', time()); 

A partire da PHP5 è anche possibile utilizzare il carattere di formato c per stampare la stessa stringa esatta.

echo date('c',time()); 

Questi sarebbero entrambi devono stampare la seguente:

2009-04-03T11:49:00+01:00 

SOURCE

+0

+1 per dare un'opzione per PHP4. –

+0

La stringa di date che date è il caso del problema di @ user1329212. Ho pubblicato la stringa corretta come risposta. – AdamJones

1

Ottieni questo risultato perché hai utilizzato il vecchio timestamp consigliato Anello di

Y-m-dTH:i:sP. 

Tuttavia, ciò che vi serve è

Y-m-d\TH:i:sP 

Questa singola barra rovesciata farà la differenza. Ad un certo punto una T maiuscola è diventata un carattere speciale in PHP che indica il timecode, quindi se non esci dalla T otterrai esattamente ciò che stai segnalando.

7

According to Google, ha valore è un campo opzionale che, se previsto, deve essere formattato come

YYYY-MM-DDThh:mmTZD 

L'esportazione di default di un datetime SQL è dependent on the language setting for your server, e può includere spazi e caratterizzata TZD quali:

2014-09-19 10:33:05 UTC 

The W3 specify che TZD può essere formattato in una qualsiasi delle tre opzioni

TZD = designatore fuso orario (Z o + hh: mm o -hh: mm)

Qualsiasi spazio dalla formattazione predefinita deve essere rimosso; il carattere 'T' deve essere inserito prima del tempo e il TZD deve corrispondere a uno dei tipi supportati.

Pertanto, per formattare il timestamp corrente, utilizzare i seguenti parametri.

echo date('Y-m-dTH:i:sP', time()); 

A partire da PHP5 è anche possibile utilizzare il carattere di formato c per stampare la stessa stringa esatta.

echo date('c',time()); 
0

So che la domanda era su PHP, ma ho trovato questa pagina googling per Node/JavaScript. Quindi l'equivalente più vicino è Date.toISOString():

var d = new Date(); 
d.toISOString(); // "2017-04-19T07:23:16.040Z"