Войти или зарегистрироваться




Функция date в PHP или работа с датами

 

Практически для любого социального скрипта (фрум, чат, доска объявлений или любой другой) необходима функция работы с датами и временем. Благо, что разработчики предложили для программистов достаточно удобный инструмент работы с датами.

Совсем недавно мой знакомый попросил немного изменить вывод даты и время на своём сайте про квартиры в черногории и не только. Работая над его сайтом, собрал несколько полезных советов про работу в данной теме в 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 книги самых актуальных версий.

След. »


Самое популярное


Последние новости


Разделы форума

Все разделы форума

При перепечатке материалов ссылка на источник обязательна.

© Андрей Максимов, 2008-2011

Яндекс цитирования