2012-08-02 43 views
16

Necesito el formato de fecha para los sitemaps en php.Google Sitemap Formato de fecha

¿Cómo puedo hacer eso?

¿Es esta salida correcta?

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

¿quiere decir sitemaps agarrados por bots? –

Respuesta

27

Si usted tiene la marca de tiempo puede dar formato a la fecha correcta de esta manera:

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

Sello de tiempo podría ser time() (por hora) o algún otro método de ir a buscar un tiemstamp Unix strtotime()

+0

estoy recibiendo datos lastmod de la base de datos. y es formato de fecha y hora. Estoy usando strtotime para convertir. si el tipo es correcto para google, funciona. Gracias. –

11

Para convertir desde el formato de fecha y hora de MySQL al necesario para lastmod en los mapas de sitio, simplemente use el código PHP a continuación.

$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

para formatear la fecha y hora actual en el W3C de fecha y hora de codificación (como se usa en archivos sitemap.xml) utilizar los siguientes parámetros.

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

A partir de PHP5 también puede usar el carácter de formato c para imprimir exactamente la misma cadena.

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

Estos serían tanto imprimir el siguiente:

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

SOURCE

+0

+1 por dar una opción para PHP4. –

+0

La cadena de fecha que da es el caso del problema de @ user1329212. He publicado la cadena correcta como respuesta. – AdamJones

1

Obteniendo esta salida porque usaste el viejo sello de tiempo recomendado anillo de

Y-m-dTH:i:sP. 

Sin embargo, lo que necesita es

Y-m-d\TH:i:sP 

Esta barra invertida única que hará la diferencia. En algún momento, una T mayúscula se convirtió en un carácter especial en PHP que significa código de tiempo, por lo que si no escapa de la T obtendrá exactamente lo que informa.

7

According to Google, que valor es un campo opcional que, si se proporciona, debe estar formateada como

YYYY-MM-DDThh:mmTZD 

La exportación predeterminado de un datetime SQL es dependent on the language setting for your server, y puede incluir espacios y caracterizado TZD tales como:

2014-09-19 10:33:05 UTC 

The W3 specify que TZD puede ser formateado en cualquiera de las tres opciones

TZD zona = tiempo de designador (Z o + hh: mm o -hh: mm)

Se deben quitar los espacios de su formateo predeterminado; el carácter 'T' debe insertarse antes de tiempo, y el TZD debe coincidir con uno de los tipos soportados.

Por lo tanto, para formatear la marca de tiempo actual, use los siguientes parámetros.

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

A partir de PHP5 también puede usar el carácter de formato c para imprimir exactamente la misma cadena.

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

Sé que la pregunta era sobre PHP, pero encontré esta página buscando en Nodo/JavaScript. Entonces, el equivalente más cercano es Date.toISOString():

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