Windows. Вирусы. Ноутбуки. Интернет. Office. Утилиты. Драйверы

Очевидно, что очень часто программистам приходится работать с датой и временем . Самый простой пример - это дата и время отправки сообщения на форуме. И, разумеется, такие вещи могут реализоваться на PHP , тем более, что возможностей по работе с датой и временем в PHP очень много.

Базовая функция, связанная с датой и временем в PHP , - это функция time() , которая возвращает количество секунд, прошедших с полуночи 01.01.1970 (зарождение эпохи Unix ):

echo time();
?>

Запустив данный скрипт, Вы узнаете, сколько секунд прошло с полуночи 01.01.1970 до момента вызова функции time() в Вашем скрипте.

Разумеется, помимо этой базовой функции, которая присутствует во всех языках программирования, где можно работать с датой и временем (по крайней мере, среди тех, которые я знаю), существует и другая функция, которая называется getdate() :

$datetime = getdate();
foreach ($datetime as $k=>$v)
echo "$k - $v
";
?>

Запустив данный скрипт, Вы увидите набор ключей в массиве и их соответствующих значений (заодно, повторили конструкцию foreach ). Думаю, что теперь для Вас не составит труда узнать любые данные, связанные с датой и временем . Например, чтобы вывести текущее время, необходимо написать следующий код:

$datetime = getdate();
echo $datetime["hours"].":".$datetime["minutes"].":".$datetime["seconds"];
?>

Также у функции getdate() существует необязательный параметр, который означает количество секунд, прошедших с полуночи 01.01.1970 . Он сделан для того, чтобы эта функция могла возвращать не только текущие время и дату, а, вообще говоря, любые:

$datetime = getdate(152353232);
echo $datetime["year"];
?>

В результате, Вы увидите 1974-ый год.

Также существует функция date() . Я рекомендую посмотреть описание по ней в справочнике, так как данная функция принимает весьма сложный параметр, который задаёт формат вывода даты. Элементов форматирования чуть больше 30-ти штук. И в примере ниже я приведу несколько из них, а остальные посмотрите в справочнике, потому что их запоминать не нужно, но ознакомиться с ними крайне желательно. А принцип их использования знать обязательно, и о нём следующий пример:

echo date("Сегодня d.m.Y H:i:s");
?>

В результате, Вы увидите что-то наподобие этого: "Сегодня 15.11.2010 21:44:24 ". Также у функции date() есть ещё второй необязательный параметр, задающий timestamp , как раз та величина, равная количеству секунд, прошедших с полуночи 01.01.1970 . Пример использования второго параметра:

echo date("Когда-то было d.m.Y H:i:s", 5393235329);
?>

Также существует функция gmdate() , которая является полным аналогом функции date() , но функция gmdate() показывает время не по часовому поясу сервера, на котором работает скрипт, а по Гринвичу . Очевидно, что с помощью этой функции надо сохранять всю информацию о дате и времени, которую видит пользователь, а при выводе нужно подстраиваться под часовой пояс каждого пользователя (в идеале, конечно):

echo gmdate("Сейчас на Гринвиче D M j H:i:s T Y")
?>

В результате, Вы увидите примерно следующее: "Mon Nov 15 18:52:45 GMT 2010 ". Разумеется, у Вас будет выведена уже другая дата, но в аналогичном формате. Также я настоятельно рекомендую залезть в справочник и просто ознакомиться с другими элементами даты и времени в PHP (я привёл только треть), так как функции date() и gmdate() - это самый простой и самый быстрый способ получить дату и время в практически любом формате.

Рассмотрим, как работать с датами и временем в PHP.

Время в Unix -компьютерах

Для Unix-компьютеров начало отсчета времени –– полночь 1 января 1970 года. Любая дата вычисляется как количество секунд (обозначаемое timestamp –– метка времени), прошедших с 1.01.1970 года. Эти соглашения также используются в PHP. Например, мы хотим перейти на день вперед. Тогда нужно лишь добавить к текущему значению timestamp 60×60×24 секунд.

Такая схема учета времени существенно облегчает операции с датами. Например, если одно значение timestamp больше другого, первое значение соответствует более поздней дате, чем второе.

Единицы времени в сек

Получение текущего времени

В PHP для получения текущего значения timestamp надо вызвать функцию time() без параметров, например:

Многие PHP-функции для работы с датой и временем в качестве аргумента принимают значение timestamp. Например, функция date() возвращает отформатированную в соответствии с заданным форматом строку даты, например:

Создание timestamp по дате

Функция mktime () создаст timestamp, если указать час, минуту, секунду, день месяца, месяц и год:

Функция strtotime ()

Функция формирует timestamp для даты, указанной в виде фразы на английском, например April 1 или Friday.

Значение даты нужно задавать в формате ГГГГ-ММ-ДД. Если функция strtotime не может преобразовать дату, она возвращает false.

Примеры использования функции date()

Встроенная функция floor() используется для того, чтобы отбросить дробную часть результата.

Следующий текст при первом чтении можно пропустить

Форматы даты в базах данных MySQL

Формат timestamp в PHP несовместим с форматом timestamp в СУБД MySQL.

В MySQL есть три типа полей даты и времени: DATA (дата), TIME (время), DATETIME (дата и время). Также имеется специальный тип данных TIMESTAMP, который работает подобно DATETIME, но автоматически обновляется в соответствие с текущим временем при каждой вставке или обновлении записей таблицы.

Для преобразования timestamp в формате PHP в формат MySQL можно использовать такой код:

Date("Y-m-d H:i:s", $timestamp)

Например, можем использовать “2008-10-01 13:23:40” как дату и время.

Чтобы получить PHP-timestamp из запроса SELECT, надо использовать SQL- функцию UNIX_TIMESTAMP():

SELECT UNIX_TIMESTAMP(дата) FROM таблица

В MySQL есть много и других полезных функций для работы с датой и временем.

Для работы с датами в PHP применяются различные функции. Мы начнем изучение с функции time .

Функция time, формат timestamp

Функция time возвращает разницу в секундах между 1-го января 1970 года и текущим моментом времени . Такое представление даты называется форматом timestamp .

Зачем нужен timestamp?

Время в формате timestamp используется для того, чтобы найти разницу между датами в секундах.

К примеру, у меня есть timestamp за 1-го января текущего года и timestamp за текущий момент времени . Я отниму один от другого и получу разницу между этими моментами в секундах . Поделю эту разницу на 60 и получу разницу в минутах (так как в минуте 60 секунд). Поделю еще на 60 - и получу разницу в часах. И так далее.

С помощью функции time мы можем получить только текущий момент времени. Чтобы получить timestamp за любую дату следует использовать функцию mktime :

Функция mktime

Функция mktime работает аналогично функции time , но, в отличие от нее, принимает параметры: mktime(час, минута, секунда, месяц, день, год) (обратите внимание на то, что месяц и день переставлены местами ). Посмотрите примеры работы:

Параметры можно опускать с конца . Если мы не напишем год (последний параметр) - то автоматически возьмется текущий год, если не напишем еще и день (предпоследний параметр) - то возьмется текущий день и текущий год. И так далее:

Решим типичную задачу на time и mktime . Пусть нам нужно найти разницу в секундах между текущим моментом времени и полуднем (12 часов, 0 минут, 0 секунд) 1-го февраля (февраль - это месяц номер 2) 2000 года:

Полученная разница в секундах будет выглядеть так: 612717139 (обновите страницу и это число поменяется).

Вооружившись знаниями о том, что такое формат timestamp (он нам еще понадобится в дальнейшем), изучим более полезные функции для работы с датами, например, функцию date.

Функция date

Функция date выводит текущие дату и время в заданном формате.

Формат задается управляющими командами (английскими буквами), при этом можно вставлять любые разделители между ними (дефисы, двоеточие и так далее).

Команды (заглавные буквы отличаются от обычных , обратите внимание!):

  • U – количество секунд, прошедших с 1 января 1970 года (то есть timestamp).
  • z – номер дня от начала года.
  • Y – год, 4 цифры.
  • y - год, две цифры.
  • m – номер месяца (с нулем спереди).
  • n – номер месяца без нуля впереди.
  • d – номер дня в месяце, всегда две цифры (то есть первая может быть нулем).
  • j – номер дня в месяце без предваряющего нуля.
  • w – день недели (0 - воскресенье, 1 - понедельник и т.д.).
  • h – часы в 12-часовом формате.
  • H – часы в 24-часовом формате.
  • i – минуты.
  • s – секунды.
  • L – 1, если високосный год, 0, если не високосный.
  • W – порядковый номер недели года.
  • t – количество дней в указанном месяце.

Примеры работы с date:

Второй параметр функции date

Функция date имеет второй необязательный параметр , который принимает момент времени в формате timestamp. Если передать этот параметр, то функция date отформатирует не текущий момент времени, а тот, который передан вторым параметром. Этот timestamp можно получить, к примеру, через mktime (но не обязательно):

Этим можно воспользоваться, чтобы узнать номер дня недели за определенную дату - просто передадим ее вторым параметром с помощью функции mktime , а первым параметром поставим управляющий символ "w" :

Функция strtotime

Следующая полезная функция, которую мы разберем, называется strtotime.

Функция strtotime - это аналог функции mktime (тоже возвращает timestamp), только в отличие от нее принимает дату в более свободном формате.

К примеру, я могу передать ей строку "2025-12-31" и функция сама разберет, где тут год, где месяц, а где день, и вернет эту дату в формате timestamp.

Что можно делать еще: можно написать так - strtotime("now") - и мы получим текущий момент времени, или так - strtotime("next Monday") - и мы получим следующий понедельник (Monday по-английски "понедельник").

Все форматы можно посмотреть .

Примеры работы:

Следующий код вернет дату предыдущего понедельника:

Как добавить или отнять дату

Чтобы отнять или прибавить к дате определенный промежуток времени, следует пользоваться комбинацией из трех функций: date_create - она подготавливает дату к работе (дата должна быть в формате год-месяц-день) создавая так называемый объект дата , с которым производятся дальнейшие манипуляции, date_modify - она прибавляет или отнимает, date_format - она выводит получившуюся дату в заданном формате. Чтобы вникнуть в работу с этими функциями изучите примеры ниже.

Пример 1

Давайте создадим объект с датой за 2025 год, 12 месяц, 31 день, затем прибавим к ней 1 день и выведем в формате "день.месяц.год"

Результат выполнения кода:

Пример 2

Давайте создадим объект с датой за 2025 год, 12 месяц, 31 день, затем прибавим к ней 3 дня и выведем в формате "день.месяц.год"

Результат выполнения кода:

Пример 3

Давайте создадим объект с датой за 2025 год, 12 месяц, 31 день, затем прибавим к ней 3 дня и 1 месяц и выведем в формате "день.месяц.год"

Результат выполнения кода:

Пример 4

Давайте создадим объект с датой за 2025 год, 1 месяц, 1 день, затем отнимем от нее 1 день и выведем в формате "день.месяц.год"

Результат выполнения кода:

Что вам делать дальше:

Приступайте к решению задач по следующей ссылке: задачи к уроку .

Когда все решите - переходите к изучению новой темы.

Введение в ООП

  • Урок №
    новая вкладка с new.code.mu
    Введение
  • Урок №
    новая вкладка с new.code.mu
    Свойства
  • Урок №
    новая вкладка с new.code.mu
    Методы
  • Урок №
    новая вкладка с new.code.mu
    Свойства и $this
  • Урок №
    новая вкладка с new.code.mu
    Методы и $this
  • Урок №
    новая вкладка с new.code.mu
    public private
  • Урок №
    новая вкладка с new.code.mu
    Конструктор
  • Урок №
    новая вкладка с new.code.mu
    Геттеры сеттеры
  • Урок №
    новая вкладка с new.code.mu
    Свойства только для чтения
  • Урок №
    новая вкладка с new.code.mu
    Один класс - один файл
  • Урок №
    новая вкладка с new.code.mu
    Объекты в массиве
  • Урок №
    новая вкладка с new.code.mu
    Начальные значения свойств в конструкторе

PHP расширение для работы с датой и временем, это набор классов, которые позволяют решать множество задач. Данные функции доступны начиная с 5.2 версии, были представлены несколько классов, каждый из которых отображал сценарий реального времени:

Дата и время представлялись с помощью DateTime объекта.

Часовой пояс представлялся с помощью DateTimeZone.

DateInterval объекты представляют интервал времени. Например, когда нам необходимо отсчитать 2 дня или часа от текущего времени. Этот объект не основывается на конкретном времени, это просто интервал.

DatePeriod представляет период между двумя датами.

Теперь мы рассмотрим реальное применение вышесказанного.

Date() и DateTime

Если нам нужно получить дату, мы используем date() , это просто и работает. Всего лишь передать желаемый формат даты. Только это не совсем удобно на практике, например, когда необходимо изменять время в зависимости от временной зоны.

DateTime делает больше, нежели просто возвращает дату. Перед тем как это использовать необходимо инициировать новый DateTime объект. Делается это как и в любом другом PHP классе:

$date = new DateTime();

Конструктор DateTime принимает строку как параметр, на данный момент строка пустая, установлена текущая дата и время по умолчанию.

Для создания определенной даты, необходимо передать условие для конструктора. Ниже можете увидеть некоторые из них, которые весьма понятны:

New DateTime("2013, March 24") //DateTime отобразит 24 марта 2013 new DateTime("2013-03-24") //DateTime отобразит 24 марта 2013 new DateTime("+2 days") // 2 день начиная от сегодняшнего new DateTime("tomorrow") // завтрашний день

Полный список доступных форматов можно найти в официальной документации .

Если не найдете подходящий формат времени, вы можете определить его сами с помощью DateTime::createFromFormat .

Теперь, когда мы держим в руках готовый DateTime объект, мы можем делать много интересных вещей.

Временной штамп Unix

$date->getTimestamp();

Изменение Даты и Времени

$date->setDate(2013, 12, 30); //гггг, мм, дд установит определенную дату $date->setTime(12, 3, 20); //чч, мм, сс (опционально) установит время $date->modify("tomorrow"); // завтра можно задать даже так! $date->setTimestamp(1364798550); // установка даты и времени используя unix штамп

Стоит заметить, если передаем параметры выше допустимых, PHP автоматически изменит их в соответствии. Например, $date->setDate(2013, 12, 35); возвратит 2014-01-04, то же самое и для время.

Работа с несколькими датами

Теперь, когда вы осведомлены с DateTime, ваши приложения будут сложены проще и грамотнее. Надеемся теперь вы любите даты более чем когда либо.

Сейчас мы рассмотрим работу с некоторыми математическими вычислениями. Скажем, нам необходимо сравнить две даты рождения:

$sheldon = new DateTime("May 20th, 1980"); $neo = new DateTime("March 11th, 1962"); if ($sheldon > $neo) echo "Sheldon моложе нежели neo";

Это можно сделать с помощью другого сценария. Вот так:

$diff = $neo->diff($sheldon);

Вызов функции diff возвращает DateInterval объект. Вот как он выглядит:

DateInterval Object ([y] => 18 [m] => 2 [d] => 9 [h] => 0 [i] => 0 [s] => 0 => 0 => 6645)

Это public свойства. Вы можете генерировать интересные штуки на основании этого объекта.

//Neo старше на 18 лет и 2 месяца $diff->format("Neo старше на %Y лет и %m месяцев");

Самое полезное, то что можно применить DateInterval объект к другому аналогичному DateInterval объекту.

$neo->add($diff); //день рождения neo изменен на sheldon

Заметьте: Модификация DateTime, например как в случае высше, не возвращает новый объект, просто видоизменяет прежний. Держите это во внимании когда работаете со своим приложением. PHP 5.5 представил новый класс, который возвращает новый объект после модификации.

Diff это не единственный способ получить объект интервала. Так как это класс, новый объект может быть создан как обычно:

$new_diff = new DateInterval("P2Y");

Передается в конструктор количество лет, месяцев, дней и т.д. Более информации можно найти в документации о конструкторе .

Работа с часовыми поясами

Когда создаем новый DateTime объект, второй аргумент определяет часовой пояс. Если мы упустим этот аргумент, временная зона будет взята с php.ini date.timezone. Вы можете изменять это на лету с помощью вызова date_default_timezone_set :

Date_default_timezone_set("America/New_York"); new DateTime("today"); //datetime объект изменен на часовой пояс Нью Йорка

Вы также можете изменять часовой пояс с помощью объекта DateTimeZone:

$timezone = new DateTimeZone("America/New_York"); $sheldon->setTimezone($timezone); //день рождения Шэлдона по времени в New York

Можно определять временную зону в процессе создания DateTime объекта:

$sheldon = new DateTime("May 20th, 1980", $timezone);

Важно помнить, что setTimezone изменяет оригинальный объект DateTime. Мы запрашиваем изменить данную дату в соответствии с временной зоной. С другой стороны, в последнем примере, мы передали временную зону в конструктор, говоря: «Дата которую я создаю, находится в этой временной зоне».

Список доступных часовых поясов доступен в документации .

Периоды даты и времени

Думаю, официальная документация предоставляет наиболее понятные объяснения:

Позволяет перемещаться в заданном временном интервале на равные промежутки времени.

DatePeriod генерирует коллекцию времен в определенном диапазоне, через заданные интервалы. Нам нужно передать стартовую дату, интервал и конечную дату. На каждый интервал создается новый объект DateTime.

Предположим, что мы хотим получить все дни рождения Шэлдона, начиная с его рождения:

//так как дни рождения раз в год, интервал будет один год $interval = new DateInterval("P1Y"); //третий аргумент конечная дата, new DateTime() == сейчас $period = new DatePeriod($sheldon, $interval, new DateTime()); foreach($period as $dt) { //DateTime объект echo $dt->format("Y-m-d - D"), "\n"; }

Результат будет следующим:

1981-05-20 - Wed 1982-05-20 - Thu 1983-05-20 - Fri 1984-05-20 - Sun 1985-05-20 - Mon 1986-05-20 - Tue ...

Сейчас периоды вмещают стартовую дату также. Можно исключить ее, передав четвертый аргумент в конструктор:

$period = new DatePeriod($sheldon, $interval, new DateTime(), DatePeriod::EXCLUDE_START_DATE);

Давайте посмотрим, сколько раз Neo праздновал день рождение еще до рождения Шэлдона:

$bdays = new DatePeriod($neo, $interval, $sheldon, DatePeriod::EXCLUDE_START_DATE); echo iterator_count($bdays);

Расширение

Все классы, которые мы рассмотрели сегодня, могут быть расширены с помощью собственных методов. Самый распространенный способ создавать функцию __toString , которая позволит отображать DateTime объект без вызова format.

Что еще?

Как видите, это расширение даты и времени предлагает большие возможности. В последних версиях PHP есть новые классы, достаточно взглянуть в документацию.

У вас есть хорошие примеры использования даты и времени в PHP? Поделитесь ими в комментариях ниже! Всем спасибо за чтение.


(PHP 4, PHP 5, PHP 7)

date — Форматирует вывод системной даты/времени

Описание

String date (string $format [, int $timestamp = time() ])

Возвращает строку, отформатированную в соответствии с указанным шаблоном format . Используется метка времени, заданная аргументом timestamp , или текущее системное время, если timestamp не задан. Таким образом, timestamp является необязательным и по умолчанию равен значению, возвращаемому функцией time() .

Список параметров

Шаблон результирующей строки (string ) с датой. См. параметры форматирования ниже. Также существует несколько предопределенных констант даты/времени , которые могут быть использованы вместо этих параметров. Например: DATE_RSS заменяет шаблон "D, d M Y H:i:s" .

В параметре format распознаются следующие символы
Символ в строке format Описание Пример возвращаемого значения
День --- ---
d День месяца, 2 цифры с ведущим нулём от 01 до 31
D Текстовое представление дня недели, 3 символа от Mon до Sun
j День месяца без ведущего нуля от 1 до 31
l (строчная "L") Полное наименование дня недели от Sunday до Saturday
N Порядковый номер дня недели в соответствии со стандартом ISO-8601 (добавлен в версии PHP 5.1.0) от 1 (понедельник) до 7 (воскресенье)
S Английский суффикс порядкового числительного дня месяца, 2 символа st , nd , rd или th . Применяется совместно с j
w Порядковый номер дня недели от 0 (воскресенье) до 6 (суббота)
z Порядковый номер дня в году (начиная с 0) От 0 до 365
Неделя --- ---
W Порядковый номер недели года в соответствии со стандартом ISO-8601; недели начинаются с понедельника (добавлено в версии PHP 4.1.0) Например: 42 (42-я неделя года)
Месяц --- ---
F Полное наименование месяца, например January или March от January до December
m Порядковый номер месяца с ведущим нулём от 01 до 12
M Сокращенное наименование месяца, 3 символа от Jan до Dec
n Порядковый номер месяца без ведущего нуля от 1 до 12
t Количество дней в указанном месяце от 28 до 31
Год --- ---
L Признак високосного года 1 , если год високосный, иначе 0 .
o Номер года в соответствии со стандартом ISO-8601. Имеет то же значение, что и Y , кроме случая, когда номер недели ISO (W ) принадлежит предыдущему или следующему году; тогда будет использован год этой недели. (добавлен в версии PHP 5.1.0) Примеры: 1999 или 2003
Y Порядковый номер года, 4 цифры Примеры: 1999 , 2003
y Номер года, 2 цифры Примеры: 99 , 03
Время --- ---
a Ante meridiem (англ. "до полудня") или Post meridiem (англ. "после полудня") в нижнем регистре am или pm
A Ante meridiem или Post meridiem в верхнем регистре AM или PM
B Время в формате Интернет-времени (альтернативной системы отсчета времени суток) от 000 до 999
g Часы в 12-часовом формате без ведущего нуля от 1 до 12
G Часы в 24-часовом формате без ведущего нуля от 0 до 23
h Часы в 12-часовом формате с ведущим нулём от 01 до 12
H Часы в 24-часовом формате с ведущим нулём от 00 до 23
i Минуты с ведущим нулём от 00 до 59
s Секунды с ведущим нулём от 00 до 59
u Микросекунды (добавлено в версии PHP 5.2.2). Учтите, что date() всегда будет возвращать 000000 , т.к. она принимает целочисленный (integer ) параметр, тогда как DateTime::format() поддерживает микросекунды. Например: 654321
Временная зона --- ---
e Код шкалы временной зоны(добавлен в версии PHP 5.1.0) Примеры: UTC , GMT , Atlantic/Azores
I (заглавная i) Признак летнего времени 1 , если дата соответствует летнему времени, 0 в противном случае.
O Разница с временем по Гринвичу, в часах Например: +0200
P Разница с временем по Гринвичу с двоеточием между часами и минутами (добавлено в версии PHP 5.1.3) Например: +02:00
T Аббревиатура временной зоны Примеры: EST , MDT ...
Z Смещение временной зоны в секундах. Для временных зон, расположенных западнее UTC возвращаются отрицательные числа, а расположенных восточнее UTC - положительные. от -43200 до 50400
Полная дата/время --- ---
c Дата в формате стандарта ISO 8601 (добавлено в PHP 5) 2004-02-12T15:19:21+00:00
r Дата в формате » RFC 2822 Например: Thu, 21 Dec 2000 16:01:07 +0200
U Количество секунд, прошедших с начала Эпохи Unix (The Unix Epoch, 1 января 1970 00:00:00 GMT) Смотрите также time()

Любые другие символы, встреченные в строке-шаблоне, будут выведены в результирующую строку без изменений. Z всегда возвращает 0 при использовании gmdate() .

Замечание :

Поскольку рассматриваемая функция принимает в качестве параметра временные метки типа integer , форматирующий символ u будет полезен только при использовании функции date_format() и пользовательских меток времени, созданных с помощью функции date_create() .

timestamp

Необязательный параметр timestamp представляет собой integer метку времени, по умолчанию равную текущему локальному времени, если timestamp не указан. Другими словами, значение по умолчанию равно результату функции time() .

Возвращаемые значения

Возвращает отформатированную строку с датой. При передаче нечислового значения в качестве параметра timestamp будет возвращено FALSE и вызвана ошибка уровня E_WARNING .

Список изменений

Версия Описание
5.1.0 Допустимым диапазоном дат для временных меток обычно являются даты с 13 декабря 1901, 20:45:54 GMT по 19 января 2038, 03:14:07 GMT. (Они соответствуют минимальному и максимальному значению 32-битного целого числа со знаком). Однако для PHP версии ниже 5.1.0 в некоторых операционных системах (например, Windows) этот диапазон был ограничен датами 01-01-1970 до 19-01-2038.
5.1.0

Теперь ошибки, связанные с временными зонами, генерируют ошибки уровня E_STRICT и E_NOTICE .

5.1.1 Для стандартных форматов даты/времени существуют специальные константы , которые могут быть указаны в качестве параметра format .

Примеры

Пример #1 Примеры использования функции date()

// установка временной зоны по умолчанию. Доступно начиная с версии PHP 5.1
date_default_timezone_set ("UTC" );

// выведет примерно следующее: Monday
echo date ("l" );

// выведет примерно следующее: Monday 8th of August 2005 03:12:46 PM
echo date ("l jS \of F Y h:i:s A" );

// выведет: July 1, 2000 is on a Saturday
echo "July 1, 2000 is on a " . date ("l" , mktime (0 , 0 , 0 , 7 , 1 , 2000 ));

/* пример использования константы в качестве форматирующего параметра */
// выведет примерно следующее: Wed, 25 Sep 2013 15:28:57 -0700
echo date (DATE_RFC2822 );

// выведет примерно следующее: 2000-07-01T00:00:00+00:00
echo date (DATE_ATOM , mktime (0 , 0 , 0 , 7 , 1 , 2000 ));
?>

Чтобы запретить распознавание символа как форматирующего, следует экранировать его с помощью обратного слеша. Если экранированный символ также является форматирующей последовательностью, то следует экранировать его повторно.

Пример #2 Экранирование символов в функции date()

// выведет примерно следующее: Wednesday the 15th
echo date ("l \t\h\e jS" );
?>

Для вывода прошедших и будущих дат удобно использовать функции date() и mktime() .

Пример #3 Пример совместного использования функций date() и mktime()

$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 );
?>

Замечание :

Данный способ более надежен, чем простое вычитание и прибавление секунд к метке времени, поскольку позволяет при необходимости гибко осуществить переход на летнее/зимнее время.

Ещё несколько примеров использования функции date() . Важно отметить, что следует экранировать все символы, которые необходимо оставить без изменений. Это справедливо и для тех символов, которые в текущей версии PHP не распознаются как форматирующие, поскольку это может быть введено в следующих версиях. Для экранировании управляющих последовательностей (например, \n) следует использовать одинарные кавычки.

Пример #4 Форматирование с использованием date()

// Предположим, что текущей датой является 10 марта 2001, 5:16:18 вечера,
// и мы находимся во временной зоне Mountain Standard Time (MST)

$today = date ("F j, Y, g:i a" ); // March 10, 2001, 5:16 pm
$today = date ("m.d.y" ); // 03.10.01
$today = date ("j, n, Y" ); // 10, 3, 2001
$today = date ("Ymd" ); // 20010310
$today = date ("h-i-s, j-m-y, it is w Day" ); // 05-16-18, 10-03-01, 1631 1618 6 Satpm01
$today = date ("\i\t \i\s \t\h\e jS \d\a\y." ); // it is the 10th day.
$today = date ("D M j G:i:s T Y" ); // Sat Mar 10 17:16:18 MST 2001
$today = date ("H:m:s \m \i\s\ \m\o\n\t\h" ); // 17:03:18 m is month
$today = date ("H:i:s" ); // 17:16:18
$today = date ("Y-m-d H:i:s" ); // 2001-03-10 17:16:18 (формат MySQL DATETIME)
?>

Для форматирования дат на других языках используйте вместо date() функции setlocale() и strftime() .

Примечания

Замечание :

Для получения метки времени из строкового представления даты можно воспользоваться функцией strtotime() . Кроме того, некоторые базы данных имеют собственные функции для преобразования внутреннего представления даты в метку времени (например, функция MySQL » UNIX_TIMESTAMP).

Если заметили ошибку, выделите фрагмент текста и нажмите Ctrl+Enter
ПОДЕЛИТЬСЯ: