- Подробности
-
Категория: PHP. Синтаксис
Управляем датой и временем
Дата и время часто выводятся нами в новостях, комментариях или постах в форумах. Но я столкнулся с такой проблемой. У меня на предприятии заявки на неисправности разработанных мной сайтов приходят регулярно, для этого у заказчиков есть специальный интерфейс. Так вот там дата и время заявки стали сильно врать, а именно врать они стали после отмены перевода на летнее время. Именно поэтому я озадачился решением данной задачи и вот что у нас есть на выходе.
Первое куда естественно стоит посмотреть — это на временной пояс, который установлен по умолчанию. Делается это просто:
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"] вы получите локализованную версию времени и даты. Маску вывода вы можете менять по своему усмотрению.
Данный урок подготовлен для вас командой сайта ruseller.com
Источник урока: www.ruseller.com
Автор: Павлов Александр