Не правильное время на не правильном месте
Сервер на котором мой сайт хостится находится в зоне GMT -5.
Локальное время где я живу GMT +5.
Мой скрипт парсить RSS ленту новостей (на PHP) и закидывает в базу (MySQL), скрипт работает и во время закидывания в базу почему то время изменяет (на -5 часов). Допустим в RSS ленте есть вот такой item
[HTML]
<item>
<title>Хосни Мубарак пообещал не участвовать в следующих выборах президента</title>
<link>http://some-site.com/news/khosni-mubarak-poobeshchal-ne-uchastvovat-v-sleduyushchikh-vyborakh-prezidenta</link>
<pubDate>Wed, 02 Feb 2011 05:05:47 +0000</pubDate>
<dc:creator>Zebra</dc:creator>
<guid isPermaLink="false">98840 at http://some-site.com</guid>
</item>
[/HTML]
Как видите время тут 05:05:47 но после того как мой срипт его заберет и засунет в базу
$p->cast('http://some-site.com/news/rss');
$newsLenta=$p->get_podcast_arrays();
foreach($newsLenta as $item)
{
$date=$item["pubdate"];
$date=explode(" ",$date);
$day=$date[1];
$month=$date[2];
$month=DigitalMonth($month); //Изменяем строковой месяц в цифровой например Jan-> 01, или Feb->02
$year=$date[3];
$time=$date[4];
$post_date=$year."-".$month."-".$day." ".$time;
$query="INSERT INTO newsTable (content,image_path,link,post_date,title) VALUES (";
$query.="'".$content."','".$img."','".$item['link']."','".$post_date."','".$item['title']."')";
}
Остальные поля вводятся нормально только проблема со временем.
Пробовал изменит часовой пояс
Не помогает
:D
ладно, серьёзней. А поле `post_date` какого типа? И СУБД какая?
поле datetime. тогда вот это
мне совсем не понятно. хотя, хрен знает, вроде всё по правилам.
а хостёр что говорит по поводу своего времени? у вас разница 10 часов, если я правильно понял. сдвиг записи получается на 5 часов. а почему? потому что в pubDate написано арабскими цифрами: +0000.
мне совсем не понятно. хотя, хрен знает, вроде всё по правилам.
$date=$item["pubdate"];
$date=explode(" ",$date);
$day=$date[1];
$month=$date[2];
$month=DigitalMonth($month); //Изменяем строковой месяц в цифровой например Jan-> 01, или Feb->02
$year=$date[3];
$time=$date[4];
$post_date=$year."-".$month."-".$day." ".$time;
сдвиг записи получается на 5 часов. а почему? потому что в pubDate написано арабскими цифрами: +0000.
Хотя я на эти +0000 даже не смотрю обрати внимания на мой скрипт сверху. Я просто тупо explode'ом беру дату как текст.
дело в том, что у нормальных людей системное время всегда GMT, без поправок на часовой пояс.
Попробуй после коннекта к бд выполнить запрос SET time_zone = '+00:00'
//Ну и в пхп есть date_default_timezone_set('Europe/Moscow');
Variable_name Value
system_time_zone EST
time_zone SYSTEM
Попробуй после коннекта к бд выполнить запрос SET time_zone = '+00:00'
Не помогло
//Ну и в пхп есть date_default_timezone_set('Europe/Moscow');
Пробовал изменит часовой пояс
[phpdoc]date_default_timezone_set[/phpdoc]
$post_date=$year."-".$month."-".$day." ".$time;
То в ней и хранится.
И пхп-шные настройки тоже никак не влияют на записанные/считанные время и дату. Можете просто проверить : в пхп выполнить последовательно mysql запросы: insert into newsTable (post_date) values ('2011-01-01 01:01:01') и select'ом её извлечь.
Ну а по времени правильно: rss по +00:00 выписываются а вы смотрите по +05:00 вот и разница -05 часов.
Не помогает
:D
Еще одно, в PHP есть волшебная функция: [phpdoc]strtotime[/phpdoc]
$p->cast('http://some-site.com/news/rss');
$newsLenta=$p->get_podcast_arrays();
foreach($newsLenta as $item)
{
$query="INSERT INTO newsTable (content,image_path,link,post_date,title) VALUES (";
$query.="'".$content."','".$img."','".$item['link']."','".date("Y-m-d H:i:s",strtotime($item["pubdate"]))."','".$item['title']."')";
}