it-swarm.com.ru

Google Sitemap Формат даты

Мне нужен формат даты для файлов Sitemap в php.

Как я могу это сделать ?

Правильный ли этот вывод?

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

Если у вас есть отметка времени, вы можете правильно отформатировать дату следующим образом:

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

Отметка времени может быть time() (для текущего времени) или каким-либо другим способом извлечения таймстампов Unix, например strtotime()

33
Dunhamzzz

Чтобы отформатировать текущую временную метку в кодировке W3C Datetime (как используется в файлах sitemap.xml), используйте следующие параметры.

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

Начиная с PHP5 вы также можете использовать символ формата c, чтобы напечатать точно такую ​​же строку.

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

Они оба распечатали бы следующее:

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

ИСТОЧНИК

19
Erfan Safarpoor

Чтобы преобразовать формат даты и времени MySQL в формат, необходимый для lastmod в файлах Sitemap, просто используйте код PHP ниже.

$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

Согласно Google , его значение является необязательным полем, которое, если оно предусмотрено, должно быть отформатировано как

YYYY-MM-DDThh:mmTZD 

Экспорт по умолчанию даты-времени SQL зависит от языковой настройки вашего сервера и может включать пробелы и характерные значения TZD, такие как:

2014-09-19 10:33:05 UTC

W3 указывает , что TZD может быть отформатирован в любом из трех вариантов

TZD = обозначение часового пояса (Z или + чч: мм или -чч: мм)

Любые пробелы из вашего стандартного форматирования должны быть удалены; символ «T» должен быть вставлен раньше времени, а TZD должен соответствовать одному из поддерживаемых типов.

Поэтому для форматирования текущей временной отметки используйте следующие параметры.

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

Начиная с PHP5 вы также можете использовать символ формата c, чтобы напечатать точно такую ​​же строку.

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

Вы получаете этот вывод, потому что вы использовали старую рекомендуемую строку метки времени 

Y-m-dTH:i:sP.

Однако то, что вам нужно, это 

Y-m-d\TH:i:sP

Этот единственный обратный слеш будет иметь значение. В какой-то момент заглавная буква T стала специальным символом в PHP, обозначающим тайм-код, поэтому, если вы не выберете эту букву T, вы получите именно то, что сообщаете.

3
AdamJones

У вас есть много форматов на выбор . Использование параметра c с функцией date() даст вам рекомендуемый формат.

2
John Conde

удалите «EES» Мой похож на это 2013-12-26T19: 00: 00-05: 00 и он работает http://www.industry-automation-parts.com/1_e_0_sitemap .xml

1
user3152317

Я знаю, что вопрос был о PHP, но я нашел эту страницу, гуглящую для Node/JavaScript. Итак, ближайший эквивалент Date.toISOString():

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

с moment.js;

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