Мне нужен формат даты для sitemaps в php.
Как я могу это сделать?
Правильно ли этот выход?
<lastmod>2012-08-02EEST18:01:18+03:00</lastmod>
Мне нужен формат даты для sitemaps в php.
Как я могу это сделать?
Правильно ли этот выход?
<lastmod>2012-08-02EEST18:01:18+03:00</lastmod>
Если у вас есть метка времени, вы можете правильно отформатировать дату следующим образом:
<lastmod><?php echo date('c', $timestamp); ?></lastmod>
Отметка времени может быть time()
(для текущего времени) или каким-либо другим способом получения unix tiemstamp, например strtotime()
Чтобы отформатировать текущую временную метку в кодировке 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
Чтобы преобразовать из формата даты и времени 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
Согласно 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());
Получение этого результата, потому что вы использовали старую рекомендуемую строку метки времени
Y-m-dTH:i:sP.
Однако вам нужно
Y-m-d\TH:i:sP
Эта единственная обратная косая черта будет иметь значение. В какой-то момент капитал T стал особым символом в PHP, обозначающим timecode, поэтому, если вы не избежите T, вы получите именно то, что ваши отчеты.
У вас есть много форматов на выбор. Используя параметр c
с помощью функции date()
, вы получите рекомендуемый формат для вас.
Я знаю, что вопрос касался PHP, но я нашел эту страницу для поиска по Node/JavaScript. Таким образом, ближайший эквивалент Date.toISOString()
:
var d = new Date();
d.toISOString(); // "2017-04-19T07:23:16.040Z"
удалить "EES" Шахта похожа на это 2013-12-26T19: 00: 00-05: 00 и он работает http://www.industry-automation-parts.com/1_e_0_sitemap.xml
с moment.js;
moment().format('YYY-MM-DDTHH:mm:ssZ')
На самом деле, есть 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>
Надеюсь, это поможет вам. Спасибо