|
Практически для любого социального скрипта (фрум, чат, доска объявлений или любой другой) необходима функция работы с датами и временем. Благо, что разработчики предложили для программистов достаточно удобный инструмент работы с датами.
Совсем недавно мой знакомый попросил немного изменить вывод даты и время на своём сайте про квартиры в черногории и не только. Работая над его сайтом, собрал несколько полезных советов про работу в данной теме в PHP и решил подитожить в данной статье. Функция даты и времени возвращает строку и принимает аргументы format (строка) и time stamp (целое число) - необязательный аргумент:
- string date (string format [, int timestamp]);
Возвращает отформатированную строку теста и цифр согласно параметрам, указанным в аргументе format. Например, вывод даты в php текущее время будет таким: <?php echo date("d.m.Y"); ?>
Кодовые символы для шаблона времени | Символ в строке format | Описание | Пример возвращаемого значения | | a | Ante meridiem или Post meridiem в нижнем регистре | am или pm | | A | Ante meridiem или Post meridiem в верхнем регистре | AM или PM | | B | Время в стадарте Swatch Internet | От 000 до 999 | | c | Дата в формате ISO 8601 (добавлено в PHP 5) | 2004-02-12T15:19:21+00:00 | | d | День месяца, 2 цифры с ведущими нулями | от 01 до 31 | | D | Сокращенное наименование дня недели, 3 символа | от Mon до Sun | | F | Полное наименование месяца, например January или March | от January до December | | g | Часы в 12-часовом формате без ведущих нулей | От 1 до 12 | | G | Часы в 24-часовом формате без ведущих нулей | От 0 до 23 | | h | Часы в 12-часовом формате с ведущими нулями | От 01 до 12 | | H | Часы в 24-часовом формате с ведущими нулями | От 00 до 23 | | i | Минуты с ведущими нулями | 00 to 59 | | I (заглавная i) | Признак летнего времени | 1, если дата соответствует летнему времени, иначе 0 otherwise. | | j | День месяца без ведущих нулей | От 1 до 31 | | l (строчная 'L') | Полное наименование дня недели | От Sunday до Saturday | | L | Признак високосного года | 1, если год високосный, иначе 0. | | m | Порядковый номер месяца с ведущими нулями | От 01 до 12 | | M | Сокращенное наименование месяца, 3 символа | От Jan до Dec | | n | Порядковый номер месяца без ведущих нулей | От 1 до 12 | | O | Разница с временем по Гринвичу в часах | Например: +0200 | | r | Дата в формате RFC 2822 | Например: Thu, 21 Dec 2000 16:01:07 +0200 | | s | Секунды с ведущими нулями | От 00 до 59 | | S | Английский суффикс порядкового числительного дня месяца, 2 символа | st, nd, rd или th. Применяется совместно с j | | t | Количество дней в месяце | От 28 до 31 | | T | Временная зона на сервере | Примеры: EST, MDT ... | | U | Количество секунд, прошедших с начала Эпохи Unix (The Unix Epoch, 1 января 1970, 00:00:00 GMT) | 581249852 — эквивалент 2 июля 2008 года в 10 ч. 17 м. 32 с. | | w | Порядковый номер дня недели | От 0 (воскресенье) до 6 (суббота) | | W | Порядковый номер недели года по ISO-8601, первый день недели - понедельник (добавлено в PHP 4.1.0) | Например: 42 (42-я неделя года) | | Y | Порядковый номер года, 4 цифры | Примеры: 1999, 2003 | | y | Номер года, 2 цифры | Примеры: 99, 03 | | z | Порядковый номер дня в году (нумерация с 0) | От 0 до 365 | | Z | Смещение временной зоны в секундах. Для временных зон западнее UTC это отрицательное число, восточнее UTC - положительное. | От -43200 до 43200 | Ещё несколько примеров работы функции date в PHP: <?php echo (date("d = F = Y ")); //Выведет 04 = September = 2001 echo (date("l dS of F Y h:I:s A")); //Выведет Tuesday 04th of September 2001 05:1:28 PM //Обратите внимание на ds = 04th , d -день и s - окончание ?>
Таким образом достаточно просто в php вывести время в любом скрипт, самом простом или сложном. У меня, например, пришлось включать изменения по датам в моделе про рынок недвижимости черногории и высчитывать время от размещения объявления до сегодняшнего дня. Функцию можно также присвоить переменной или элементу массива, если это необходимо: <?php $date_today = date("m.d.y"); //присвоено 03.12.01 $today[1] = date("H:i:s"); //присвоит 1 элементу массива 17:16:17 echo("Текущее время: $today[1] и дата: $day_today ."); //Выведет Текущее время: 17:16:17 и дата: 03.12.01 ?>
Если Вам необходимо вывести зарезервированные символы, например слово is month, которое полностью состоит из параметров, нужно просто поставить перед каждой буквой поставить обратную косую черту (\). <?php $example = date ("H:m:s \m \i\s \m\o\n\t\h");` //Выведет 15:03:17 m is month ?>
Замечание: Для большинства систем допустимыми являются даты с 13 декабря 1901, 20:45:54 GMT по 19 января 2038, 03:14:07 GMT. (Эти даты соответствуют минимальному и максимальному значению 32-битового целого со знаком). Для Windows допустимы даты с 01-01-1970 по 19-01-2038. Замечание: Для получения метки времени из строкового представления даты можно использовать функцию strtotime(). Кроме того, некоторые базы данных имеют собственные функции для преобразования внутреннего представления даты в метку времени (напрмер, функция MySQL UNIX_TIMESTAMP).
Избежать распознавания символа как форматирующего можно, если экранировать этот символ с помощью \ Если в сочетании с \ символ являееся специальным (например, \t), следует добавлять еще один \.
Экранирование символов в php функции даты date:
<?php // вывод: Wednesday the 15th echo date("l \\t\h\e jS"); ?>
Функции date() и mktime() для вывода прошедших и будущих дат. Функции date() и mktime() example <?php $tomorrow = mktime(0, 0, 0, date("m") , date("d")+1, date("Y")); $lastmonth = mktime(0, 0, 0, date("m")-1, date("d"), date("Y")); $nextyear = mktime(0, 0, 0, date("m"), date("d"), date("Y")+1); ?>
Этот метод более надежен, чем вычитание и прибавление секунд к метке времени, так как mktime() учитывает любые неоднозначности в датах (переход на летнее/зимнее время и др.). Ну вот я и закончил работу над скриптом, в котором продажа домов в черногории теперь с датами. Если же вы хотите разобраться в данном вопросе более подробно, стоит обратить внимание на PHP функции getlastmod(), gmdate(), mktime(), strftime() и time(). Кроме того, постепенно с переходом на более свежие версии языка PHP разработчики включают новые возможности, поэтому советуем следить за обновлением дистрибутивов и скачать PHP книги самых актуальных версий. |