PHP, как настроить часовой пояс для тега lasmod для sitemap.xml на дату, взятую из MySQL

Я пишу генератор php sitemap для моего сайта, где я публикую статьи. Я хотел бы использовать метку времени из базы данных MySQL, чтобы поместить ее в тег lastmod файла sitemap.xml. Это код:

  <?php
//request to database:
$sql = 'SELECT `id`, `date_update` FROM `table`';
$pdoobj_query = $db->query($sql);
$array_db = $pdoobj_query->fetchAll(PDO::FETCH_ASSOC);

date_default_timezone_set('Europe/Moscow');

//generating text of the sitemap.xml
$file = "sitemap.xml";
$sitemap_text = <<<MAP
<?xml version="1.0" encoding="UTF-8"?>
<urlset
xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"MAP;

$number_of_array_elements = count($array_db);
$i=0;
while ($i < $number_of_array_elements){
$sitemap_text .= "\t" . '<url>' . "\r\n";
$sitemap_text .= "\t" . "\t" . '<loc>http://example.com/index.php?page=' . $array_db[$i]['id'] . '</loc>' . "\r\n";

$sitemap_text .= "\t" . "\t" . '<lastmod>' . date('c', strtotime($array_db[$i]['date_update'])) . '</lastmod>' . "\r\n";
$sitemap_text .= "\t" . "\t" . '<changefreq>weekly</changefreq>' . "\r\n";
$sitemap_text .= "\t" . "\t" . '<priority>0.9</priority>' . "\r\n";

$sitemap_text .= "\t" . '</url>' . "\r\n";
$i++;
}

$sitemap_text .='</urlset>';

file_put_contents($file, $sitemap_text);
?>

Я получил следующее значение для тега lastmod:

...

<lastmod>2016-02-06T01:53:44+04:00</lastmod>

...

UTC +04: 00, предоставленный PHP для «Европа / Москва», в настоящее время неверен, так как российское законодательство изменилось. Это должно быть UTC +03: 00. Посмотрите здесь для исторических изменений DST: Часовой пояс в Москве, Россия

Я пытался использовать следующий совет:

$original = new DateTime("now");
$timezoneName = timezone_name_from_abbr("", 3*3600, false);
$modified = $original->setTimezone(new DateTimezone($timezoneName));
echo $modified->format('c');

Но php забирает часовой пояс «Европа / Москва» и возвращает 2016-02-09T04: 41: 53 + 04: 00, что на один час опережает текущее время.

Есть ли способ заставить php отформатировать метку времени, извлеченную из таблицы MySQL с UTC +03: 00 time zome?

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]