Форматирование текущей даты и времени в PHP
Вы часто будете работать с датами и временем при разработке веб-сайтов. Например, вам может потребоваться показать последнюю измененную дату в сообщении или указать, как давно читатель написал комментарий. Возможно, вам также придется показывать обратный отсчет дней до специального события.
К счастью, PHP поставляется с некоторыми встроенными функциями даты и времени, которые помогут нам сделать все это и многое другое довольно легко.
В этом учебном пособии вы узнаете, как отформатировать текущую дату и время в PHP. Вы также узнаете, как получить временную метку из строки даты и как добавить и вычесть разные даты.
Получение даты и времени в строчном формате
date($ format, $timestamp) — одна из наиболее часто используемых функций даты и времени, доступных в PHP. Он принимает желаемый формат вывода для даты в качестве первого параметра и целое число как значение временной метки, которое необходимо преобразовать в заданный формат даты. Второй параметр является необязательным, и его отсутствие дает вывод текущей даты и времени в строчном формате на основе значения $format .
Параметр $format принимает ряд символов в качестве допустимых значений. Некоторые из этих символов имеют прямые значения: Y дает вам полное числовое значение года с 4 цифрами (2018), а y дает только две последние цифры текущего года (18). Аналогично, H даст вам час в 24-часовом формате с ведущими нулями, а h даст вам час в 12-часовом формате с ведущими нулями.
Вот некоторые из наиболее распространенных символов формата даты и их значений.
| Символ | Значение | Пример |
|---|---|---|
| d | день месяца с ведущими нулями | 03 или 17 |
| j | день месяца без ведущих нулей | 3 или 17 |
| D | день недели в виде трехбуквенной аббревиатуры | Mon |
| l | полный день недели | Monday |
| m | месяц как число с ведущими нулями | 09 или 12 |
| n | месяц как число без ведущих нулей | 9 или 12 |
| M | месяц как трехбуквенная аббревиатура | Sep |
| F | полное название месяца | September |
| y | двухзначный год | 18 |
| Y | полное число года | 2018 |
Существует множество других специальных символов для указания вывода для функции date() . Лучше всего проконсультироваться с таблицей символов формата в документации по функции date() для получения дополнительной информации о специальных случаях.
Давайте рассмотрим некоторые практические примеры функции date() . Мы можем использовать ее для получения текущего года, текущего месяца, текущего часа и т. д., Или мы можем использовать ее для получения полной строки даты.
PHP5 Дата и время
Функция PHP date(), используется для форматирования даты и/или времени.
PHP Функция date()
Функция date() , форматирует метку времени для более читаемых даты и времени.
Синтаксис
date(Формат,Метка времени)
| Параметры | Описание |
|---|---|
| Формат | Обязательно. Задает формат метки времени |
| Метка времени | Необязательно. Задает метку времени. По умолчанию — текущая дата и время |
Временная метка — это последовательность символов, обозначающие дату и/или время, когда произошло определенное событие.
PHP Получить простую дату
Необходимый параметр формат функции date() определяет, как форматировать дату (или время).
Вот некоторые символы, которые обычно используются для дат:
- d — Представляет день месяца (01 до 31)
- m — Представляет месяц (01 до 12)
- Y — Представляет год (из четырех цифрах)
- l — Представляет день недели
Другие персонажи, например «/» , «.» , или «-» также могут быть вставлены между символами для добавления дополнительного форматирования.
Пример ниже, форматирует сегодняшнюю дату тремя различными способами:
Пример
echo «Сегодня » . date(«Y/m/d») . «
«;
echo «Сегодня » . date(«Y.m.d») . «
«;
echo «Сегодня » . date(«Y-m-d») . «
«;
echo «Сегодня » . date(«l»);
?>?php
PHP Год авторского права
Функция date() , автоматического обновления года авторского права вебсайта:
Пример
PHP Получить простое время
Вот некоторые символы, которые обычно используются для времени:
- h — 12-часовой формат с ведущими нулями (01 до 12)
- i — Минуты с ведущими нулями (00 до 59)
- s — Секунды с ведущими нулями (00 до 59)
- a — В нижнем регистре до полудня и после полудня (am и pm)
В примере ниже выводится текущее время в указанном формате:
Пример
echo «Время » . date(«h:i:sa»);
?>?php
Обратите внимание, что PHP функция date() вернет текущую дату/время сервера!
PHP Получить свой часовой пояс
Если время, которое вы получили от кода не является правильным время, это, вероятно, потому, что ваш сервер находится в другой стране или настроить для другой часовой пояс.
Так, если вам нужно чтобы время было правильным согласно специфическому местоположению, можно использовать установку часового пояса.
В примере ниже задается часовой пояс «Россия/Пермь», затем, выводит текущее время в указанном формате:
Пример
date_default_timezone_set(«Россия/Пермь»);
echo «Время » . date(«h:i:sa»);
?>?php
PHP Создать метку времени
Необязательный параметр timestamp в функции date() задает метку времени. Если Вы не укажите метку времени, будет использоваться текущая дата и время (как показано в примеры выше).
Функция mktime() возвращает метку времени Unix для даты. Временная метка Unix содержит количество секунд между эпохой Unix (1 января 1970 00:00:00 GMT) и время уточняется.
Синтаксис
mktime(час, минута, секунда, месяц, день, год)
Пример ниже создает дату и время из нескольких параметров в функции mktime() :
Пример
$d=mktime(11, 14, 54, 8, 12, 2014);
echo «Создание Даты » . date(«Y-m-d h:i:sa», $d);
?>?php
PHP Создать дату из строки
Функция strtotime() , используется для преобразования читаемой строки в времени Unix.
Синтаксис
strtotime(время, теперь)
Пример ниже создает дату и время из функции strtotime() :
Пример
$d=strtotime(«10:30pm April 15 2014»);
echo «Создание Даты » . date(«Y-m-d h:i:sa», $d);
?>?php
PHP довольно грамотно преобразовывает строку в дату, так что можно вставить в различные значения:
Пример
$d=strtotime(«next Saturday»);
echo date(«Y-m-d h:i:sa», $d) . «
«;
Однако, функция strtotime() не идеалена, поэтому не забудьте проверить строки, которые вы туда вставили.
Еще примеры дат
В приведенном ниже примере, выводятся даты для следующих шести суббот:
Пример
$startdate = strtotime(«Saturday»);
$enddate = strtotime(«+6 weeks», $startdate);
?php
while ($startdate < $enddate) echo date("M d", $startdate) . "
«;
$startdate = strtotime(«+1 week», $startdate);
>
?>
Пример ниже выводит количество дней до 4 июля:
Пример
$d1=strtotime(«July 15»);
$d2=ceil(($d1-time())/60/60/24);
echo » » . $d2 .» дней до 15 июля.»;
?>?php
PHP Полный справочник дат
Для полной справки всех функций даты, пройдите к нашему полному PHP Справочик дат.
Справочник содержит краткое описание и примеры использования для каждого функция!
Мы только что запустили
SchoolsW3 видео
ВЫБОР ЦВЕТА
курс сегодня!
Сообщить об ошибке
Если вы хотите сообщить об ошибке или внести предложение, не стесняйтесь отправлять на электронное письмо:
Ваше предложение:
Спасибо Вам за то, что помогаете!
Ваше сообщение было отправлено в SchoolsW3.
ТОП Учебники
ТОП Справочники
ТОП Примеры
Получить сертификат
SchoolsW3 оптимизирован для бесплатного обучения, проверки и подготовки знаний. Примеры в редакторе упрощают и улучшают чтение и базовое понимание. Учебники, ссылки, примеры постоянно пересматриваются, чтобы избежать ошибок, но не возможно гарантировать полную правильность всего содержания. Некоторые страницы сайта могут быть не переведены на РУССКИЙ язык, можно отправить страницу как ошибку, так же можете самостоятельно заняться переводом. Используя данный сайт, вы соглашаетесь прочитать и принять Условия к использованию, Cookies и политика конфиденциальности.
Получение даты и времени в PHP. Функция date
В этой статье будет рассмотрено, как работать с датой и временем в языке программирования PHP. Также читатель узнает о таких функциях для работы со временем, как date() , time() и mktime() .
Вместо предисловия
Среди задач, с которыми регулярно сталкивается программист, очень часто встречаются разнообразные манипуляции с датами (dates) и временем (time). Никто не будет спорить с тем, что эти значения (символы, параметры) чрезвычайно важны. И база данных, и любая цифровая автоматизированная система не способны корректно работать, если нет точного времени, а также если информация о времени выполнения того либо иного процесса не сохраняется. Вот лишь некоторые примеры использования временных параметров: — элементарное добавление даты в запись БД; — отображение времени; — вывод дат в различном формате; — проверка текущего времени на соответствие заданному таймеру; — определение срока между 2-мя датами и так далее.
Чтобы работать со временем было удобно, у каждого языка программирования имеются специальные типы данных, позволяющие хранить соответствующие значения. Обычно речь идёт о числовом значении, как целом, так и с плавающей точкой.
В языке программирования PHP работу со временем символизирует UNIX TIMESTAMP. То есть время тут хранится в виде целого числа, а его исчисление начинается с полуночи 1.01.1970 — с так называемой нулевой даты, принятой в Unix и прочих POSIX-совместимых ОС (ещё эту дату называют «Unix-время»). В результате возвращается число секунд, которое прошло с начала Эпохи Unix.
Прежде чем приступить к дальнейшему изложению материала, следует определить текущее значение времени в формате UNIX TIMESTAMP. Делается это с помощью простейшего кода и функции time:
На момент написания материала было 14 октября 2020 года, поэтому в терминале отобразилось следующее:
1602666005Вы можете проверить вышеописанную команду и получить в PHP текущую дату и время самостоятельно, даже если не являетесь PHP-разработчиком — просто поместите код в любой онлайн-компилятор, вот один из многих. Так же рекомендуется делать и с остальным кодом — это поможет вам лучше понять работу описываемых в статье команд.
Но вернёмся к основной теме разговора. Благодаря коротенькому коду выше, мы получили от сервера текущее время — 1602666005 (у вас значение будет другим, ведь время не стоит на месте))).
Можно согласиться с тем, что для человека такой формат не очень удобен. Но на деле, чем проще представление данных, тем быстрее осуществляется обработка этих данных компьютерным устройством. Да и хранить такие значение в БД в плане ресурсов экономнее, чем при использовании специальных форматов. В итоге PHP работает со значениями времени одинаково на разных платформах (и Unix, и Windows), в результате чего обеспечивается универсальность использования кода.
Если же говорить об удобстве пользователя, то у разработчиков есть масса средств это удобство обеспечить.
Функция date
Эта функция возвратит пользователю строку в форме даты/времени, сделав это в определённом формате. Формат этот определяет сам пользователь.
Синтаксис функции выглядит так:
date($format);Видно, что формат указывается в качестве аргумента. Этим аргументом могут выступать самые разные символы, коих существует целая таблица:
Теперь давайте попробуем, как эта таблица работает на практике. Выведем текущий день недели:
У меня получился Wednesday, а вот что отобразится в консоли у вас, зависит от дня недели, в который вы напишете эту команду.
Теперь выведем дату в виде YYYY-ММ-DD:
А потом и дату, и время:
Описание time и mktime
Уже упоминалось, что time возвратит количество секунд с начала т. н. эпохи Unix и вплоть до текущего времени. Однако на практике эта функция чаще используется не в «чистом виде», а вместе с иными функциями.
Для начала займёмся её использованием вместе с меткой текущей даты:
* 24 * 60 * 60); // 7 дней; 24 ч.; 60 мин.; 60 сек. echo $nextWeek; // будет выведено что-то вроде 16026782231603283023А теперь используем её же, но уже совместно с date() . Давайте выведем текущую дату двумя способами, а потом выведем дату, которая наступит через неделю:
* 24 * 60 * 60); // Первый способ вывода даты echo 'Сегодня: '. date('Y-m-d') ."\n"; // Второй способ вывода echo 'Сегодня: '. date('Y-m-d', $now) ."\n"; // Дата через неделю echo 'Через неделю будет: '. date('Y-m-d', $nextWeek) ."\n";Теперь стоит поговорить о том, каким образом с функцией time используется mktime. Именно mktime возвращает метки времени Unix для даты, которую укажет пользователь.
Аргументы могут быть разные, а также опущены справа налево:
![]()
Лучше всего рассмотреть вышеописанное на примере. Давайте выведем в терминал: — текущую полную дату и время (часы, минуты, секунды); — время и дату завтрашнего дня; — время и дату следующего месяца того же дня; — ту же дату, но уже прошедшего года.
На этом всё. Если интересуют более сложные и продвинутые знания по PHP, обратите внимание на соответствующий курс в OTUS!
Работа с датами в PHP
Самой популярным действием с датами в php - является вывод текущего года в footer'е вашего сайта. Делается это путём размещения в footer'е вашего сайта следующего кода:
© Все права защищены.Вывод текущей даты в php
Для того чтобы вывести текущую дату в php используем функции date(). Для этого разместим в нужном месте следующее выражение:
Вывод текущего времени в php
Чтобы отобразить текущее время, опять воспользуемся функцией date(). Для этого в нужном Вам месте разместите следующее выражение:
Разбить выбранный промежуток дат на равные периоды в php
Допустим у Вас на сайте есть форма в которую необходимо ввести временной промежуток, выбрать даты от и до. Далее происходит какая-то обработка, запрос данных соответствующих данному временному промежутку.
Для того, чтобы в отправляемом пользователю запросе не содержалось слишком много данных, что в первую очередь вызовет длительное время обработки этого запроса, логично разбить указанный пользователем период на равные под периоды.
/* Начальную и конечную дату получаем из формы 1. начальная дата содержится в поле формы с именем - start. 2. конечная дата содержится в поле формы с именем - end. 3. Даты получаем в формате 2020-01-30 ( Y-m-d, год, месяц, день ) */ $start = new \DateTime($_REQUEST['start']); $end = new \DateTime($_REQUEST['end']); /* Указываем на какие интервалы будем разбивать временной период. Для примера по 30 дней. Чтобы разбить по неделям, нужно указать формат P1W Чтобы разбить по дням, нужно указать формат P1D */ $interval = new \DateInterval('P30D'); /* Добавляем к конечной дате время 23:59:59 */ $add23Hours = new \DateInterval('PT23H59M59S'); $end->add($add23Hours); /* Данной функцией получаем заданные интервалы, интервалы являются объектом типа DateTime. Чтобы проще было работать с датами интервалов, соберём */ $dateRange = new \DatePeriod($start, $interval, $end, 0);
foreach ($dateRange as $key=>$date) < $rsDate[] = $date->format('Y-m-d H:i:s'); > /* Если конечная дата end учитывается только в том случаи, если является начальной следующего интервала. Поэтому нужно сделать проверку на наличие даты end и если её нет, то добавить в массив. */ $last_date = new \DateTime($rsDate[count($rsDate) - 1]); if ($end->diff($last_date)->format('%d') > 0)< $rsDate[] = $end->format('Y-m-d H:i:s'); >В итоге в переменной $rsDate будет содержаться массив наших интервалов, элементы массива являются начально датой интервала.
Для примера выведем интервалы для дат: от 2020-08-02 до 2020-12-03 с интервалами по 30 дней
Array ( [0] => 2020-08-02 00:00:00 [1] => 2020-09-01 00:00:00 [2] => 2020-10-01 00:00:00 [3] => 2020-10-31 00:00:00 [4] => 2020-11-30 00:00:00 [5] => 2020-12-03 23:59:59 )



