it-swarm.dev

Formato de data do Google Sitemap

Preciso de formato de data para sitemaps em php.

Como eu posso fazer isso ?

Esta saída está certa?

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

Se você tem o timestamp, você pode formatar a data corretamente assim:

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

O registro de data e hora pode ser time() (para o horário atual) ou algum outro método de obtenção de um timestamp unix como strtotime()

33
Dunhamzzz

Para formatar o registro de data e hora atual na codificação de data e hora do W3C (conforme usado em arquivos sitemap.xml), use os seguintes parâmetros.

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

A partir do PHP5, você também pode usar o caractere de formato c para imprimir exatamente a mesma string.

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

Estes dois imprimem o seguinte:

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

FONTE

19
Erfan Safarpoor

Para converter de um formato datetime do MySQL para o necessário para lastmod em sitemaps, apenas use o código PHP abaixo.

$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

Segundo o Google , ele valor é um campo opcional que, se fornecido, deve ser formatado como

YYYY-MM-DDThh:mmTZD 

A exportação padrão de um datetime SQL é dependente da configuração de idioma do seu servidor , e pode incluir espaços e TZD caracterizados como:

2014-09-19 10:33:05 UTC

O W3 especifica que o TZD pode ser formatado em qualquer uma das três opções

TZD = designador do fuso horário (Z ou + hh: mm ou -hh: mm)

Quaisquer espaços de sua formatação padrão devem ser removidos; o caractere 'T' deve ser inserido antes do tempo, e o TZD deve corresponder a um dos tipos suportados.

Portanto, para formatar o registro de data e hora atual, use os seguintes parâmetros.

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

A partir do PHP5, você também pode usar o caractere de formato c para imprimir exatamente a mesma string.

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

Você está obtendo essa saída porque usou a antiga string de data e hora recomendada de

Y-m-dTH:i:sP.

No entanto, o que você precisa é

Y-m-d\TH:i:sP

Essa única barra invertida fará a diferença. Em algum momento, um T maiúsculo se tornou um caractere especial em PHP significando timecode, portanto, se você não escapar do T, obterá exatamente o que reporta.

3
AdamJones

Você tem muitos formatos para escolher . Usando o parâmetro c com a função date() irá obter o formato recomendado para você.

2
John Conde

delete "EES" A minha é assim 2013-12-26T19: 00: 00-05: 00 e funciona http://www.industry-automation-parts.com/1_e_0_sitemap.xml

1
user3152317

Eu sei que a questão era sobre o PHP, mas achei esta página googling para o Node/JavaScript. Então, o equivalente mais próximo é Date.toISOString():

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

com moment.js;

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