Формат даты в формате Google Sitemap - программирование
Подтвердить что ты не робот

Формат даты в формате Google Sitemap

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

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

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

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

Ответ 1

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

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

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

Ответ 2

Чтобы отформатировать текущую временную метку в кодировке 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

ИСТОЧНИК

Ответ 3

Чтобы преобразовать из формата даты и времени 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

Ответ 4

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

YYYY-MM-DDThh:mmTZD 

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

2014-09-19 10:33:05 UTC

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

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

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

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

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

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

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

Ответ 5

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

Y-m-dTH:i:sP.

Однако вам нужно

Y-m-d\TH:i:sP

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

Ответ 7

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

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

Ответ 9

с moment.js;

moment().format('YYY-MM-DDTHH:mm:ssZ')

Ответ 10

На самом деле, есть 2 подхода к этому.

Первый подход состоит в том, чтобы установить допустимую дату для карты сайта XML, которая включает символ "C", который дал значение: (2019-06-03T17: 30: 21-05: 00). Проверьте это здесь

<lastmod>'.date('c', strtotime($row['date'])).'</lastmod>

Второй подход - установить действительную дату для карты сайта RSS, которая включает символ "r", который дал значение: (2019-03-07T17: 55: 44 + 00: 00).

<pubDate>'.date('r', strtotime($row['date'])).'</pubDate>

Надеюсь, это поможет вам. Спасибо