Управляем датой и временем


Дата и время часто выводятся нами в новостях, комментариях или постах в форумах. Но я столкнулся с такой проблемой. У меня на предприятии заявки на неисправности разработанных мной сайтов приходят регулярно, для этого у заказчиков есть специальный интерфейс. Так вот там дата и время заявки стали сильно врать, а именно врать они стали после отмены перевода на летнее время. Именно поэтому я озадачился решением данной задачи и вот что у нас есть на выходе. Первое куда естественно стоит посмотреть - это на временной пояс, который установлен по умолчанию. Делается это просто: 01 if (date_default_timezone_get()) { 02 echo 'Дефолтная временная зона: ' . date_default_timezone_get() . '<br>'; 03 } 04 05 if (ini_get('date.timezone')) { 06 echo 'date.timezone: ' . ini_get('date.timezone'); 07 } 08 //Получим следующее сообщение 09 /* 10 Дефолтная временная зона: Материк/Город 11 date.timezone: Материк/Город 12 */ date.timezone задается в файле php.ini сервера, и к сожалению он не всегда доступен для правки. Поэтому выход из ситуации, когда вас не устраивает выдаваемое скриптом время это поменять дефолтную зону насильно в самом скрипте (желательно прописать такую фукнцию в начале файла), задав ее функцией date_default_timezone_set (). Данная функция влияет на дату и время, которые выводит данный скрипт и все подключаемые к нему скрипты. 1 date_default_timezone_set('Asia/Magadan'); 2 echo date("D-m-Y H:i:s"); Для того, чтобы узнать правильное написание своего временного пояса воспользуйтесь справкой сайта php.ru. Другой интересной фишкой является вывод локализованной даты и времени. Не всем нравится например то, что на его сайте выводится дата в формате 12 january 2012, мы же живем в России и хочется чтобы выводилось 12 января 2012. Делается это просто. В файле, в котором вы подключаетесь к базе данных, после подключения дописываем следующее: 1 mysql_query("SET lc_time_names = 'ru_RU'") ; Теперь при формировании SQL запроса достаточно сделать следующее: 1 $sql = "SELECT ID, VALUE1, VALUE2, VALUE3, DATE_FORMAT(date, '%d %M %Y %H:%i') as DATE, VALUE4 FROM $table"; 2 $result = mysql_query($sql); 3 $myrow = mysql_fetch_array($result); Таким образом при выводе в последствии в шаблоне вашей даты из массива c помощью $myrow["DATE"] вы получите локализованную версию времени и даты. Маску вывода вы можете менять по своему усмотрению.