Работа с датой и временем в PHP


Содержание

Работа со временем в php: сравнение и формат вывода

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

Напомню, что проще всего получить текущую дату в php можно с помощью функции date(). Например, выведет время и текущую дату.

Преобразовать формат времени

Как известно, в базе данных дата обычно записывается в формате: yyyy-mm-dd. Но при выгрузке на сайте данный формат не очень удобен для восприятия. Предлагаю рассмотреть пример ниже, который преобразует дату в нужный формат (dd-mm-yyyy):

Изменение времени в php

Для этой задачи можно использовать date() и strtotime(). Последняя преобразует дату с 1970г (в виде цифр или английского текста) в метку времени Unix. Рассмотрим примеры:

Прибавит к текущей дате 1 день:
echo date(‘d.m.Y’, strtotime(date(‘d.m.Y’).»+1 day»));

Вычтет 2 часа, 15 минут, 10 сек:
$date=date(«12:57:34»);
$vr = ‘-2 hours -15 minutes -10 seconds’;
echo date(‘H:i:s’, strtotime($date . $vr));

Прибавит 1 недели и 2 дня и вычтет 15 минут:
$date=date(«01.08.2014 12:57:34»);
$vr = ‘+1 week +2 days -15 minutes’;
echo date(‘d.m.Y H:i:s’, strtotime($date . $vr));

Последний день месяца из даты:
$timelastday = date(«t», strtotime(date(«d.m.Y»)));

Текущий день из даты:
$timefirstday = date(«d», strtotime(date(«d.m.Y»)));

Увеличиваем дату на 1 месяц и выводим ее в нужном формате:
$timenext = strtotime(date(«d.m.Y»).» +1 month»);
echo $timenextmec = date(«d.m.Y», $timenext);

Сравнение времени в php

Выполняется на уже знакомой нам функции strtotime(). Рассчитаем разницу в днях между двумя датами:
$date1=’16.11.2012′; $date2=’11.10.2012′;
echo round((strtotime($date1)-strtotime($date2))/(60*60*24));

В php есть множество возможностей по работе с датами и временем. Экспериментируйте с кодом и все получится.

PHP 5 Дата и время

Функция PHP используется date() для форматирования даты и/или времени.

Функция Date () PHP

Функция PHP date() форматирует метку времени для более удобочитаемой даты и времени.

Синтаксис

Параметр Описание
format Обязательно. Задает формат отметки времени
timestamp Дополнительные. Задает метку времени. По умолчанию используется текущая дата и время

Временная метка — это последовательность символов, указывающая дату и/или время, когда произошло определенное событие.

Получить простую дату

Обязательный параметр Format функции Date () указывает, как форматировать дату (или время).

Вот некоторые символы, которые обычно используются для дат:

  • d — Представляет день месяца (от 01 до 31)
  • m — Представляет месяц (от 01 до 12)
  • Y — Представляет год (в четырех цифрах)
  • l (строчная буква ‘ L ‘)-представляет день недели

Другие символы, такие как «/», «.» или «-«, также могут быть вставлены между символами для добавления дополнительного форматирования.

Приведенный ниже пример форматирует сегодняшнюю дату тремя различными способами:

Пример

PHP TIP-автоматический авторский год

Используйте date() функцию для автоматического обновления года авторского права на вашем веб-сайте:

Пример

Получить простое время

Вот некоторые символы, которые обычно используются для Times:

  • h — 12-часовой формат часа с ведущими нулями (от 01 до 12)
  • i — Минуты с ведущими нулями (от 00 до 59)
  • s — Секунды с ведущими нулями (от 00 до 59)
  • a — Нижний регистр Анте меридием и POST меридием (AM или PM)

В приведенном ниже примере выводится текущее время в указанном формате:

Пример

Обратите внимание, что PHP Date () функция вернет текущую дату и время сервера!

Получите ваш часовой пояс

Если время, которое вы получили от кода, не в нужное время, это, вероятно, потому, что ваш сервер находится в другой стране или настроен для другого часового пояса.

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

В приведенном ниже примере устанавливается часовой пояс на «America/нев_йорк», затем выводится текущее время в указанном формате:

Пример

Создание даты с помощью PHP mktime ()

Необязательный параметр timestamp в функции Date () Указывает метку времени. Если временная метка не указана, будет использоваться текущая дата и время (как показано в приведенных выше примерах).

mktime() функция возвращает метку времени Unix для даты. Метка времени Unix содержит количество секунд между эпохой UNIX (1 1970 января 00:00:00 GMT) и указанное время.

Синтаксис

В приведенном ниже примере создается Дата и время из нескольких параметров в mktime() функции:

Пример

Создание даты из строки с помощью PHP strtotime ()

Функция PHP strtotime() используется для преобразования человеческой читаемой строки в время UNIX.

Синтаксис

В приведенном ниже примере создается Дата и время из strtotime() функции:

Пример

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

Пример

Тем не менее, strtotime() не является совершенным, поэтому не забудьте проверить строки вы положили туда.

Другие примеры дат

Приведенный ниже пример выводит даты для следующих шести субботы:

Пример

В приведенном ниже примере выводится количество дней до 4 июля:

Пример

Полная справка на дату PHP

Для полной ссылки на все функции даты, перейдите на наш полный справка на дату PHP.


справка содержит краткое описание и примеры использования для каждой функции!

Дата и время – метод OOP

Расширение PHP Date/Time представляет собой набор классов, которые позволяют решать практически все задачи, связанные с датой и временем.

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

  • Дата или время представляются объектом DateTime;
  • Часовой пояс представляется объектом DateTimeZone;
  • Объекты DateInterval представляют временной интервал. Например, когда мы говорим, что с этого момента прошло два дня, то в этом случае « два дня » как раз является временным интервалом. Объект DateInterval не указывает на конкретную дату или время;
  • Объекты DatePeriod задают период между двумя конкретными датами.

А теперь не позволите ли мне дать два вам два небольших совета: оба, я уверен, помогут вам в решении практических задач.

От date() к DateTime

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

Функция DateTime дает нам намного больше, чем просто возможность выводить в нужном формате дату и время. Однако прежде, чем мы пойдем дальше, вам нужно будет создать новый объект DateTime , который представляет дату и / или время.

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

Конструктор по умолчанию принимает для него значение « сейчас » — текущие время и дата. Чтобы создать объект для определенной даты, вы должны присвоить ему значение этих даты и времени.

Определение форматов для объекта, как правило очень интуитивно. Ниже приводятся несколько примеров создания объектов DateTime :

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

Если в ней отсутствует нужный вам формат, вы всегда можете задать свой собственный с помощью функции DateTime :: createFromFormat :

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

Формат времени для Unix:

Изменение даты/времени:

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

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

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

А не строками « строками », которые вы использовали раньше, чтобы задавать значения через функцию StrToTime , когда нужны были некоторые математические вычисления.

Скажем, вам нужно сравнить два дня рождения:

Илон Маск рекомендует:  Postgres95 архитектура субд postgres95

Еще один сценарий сравнения двух дат. Мы можем сравнить их вот таким образом:

Функция diff задает объект DateInterval . Если мы создали для него все соответствующие значения:

Это публичные свойства. Вы можете создать и собственный привлекательный формат вывода объекта DateInterval :

Но самое главное, что интервал, заданный в объекте DateInterval , можно применить к другому объекту DateTime :

Примечание : Изменения в объекте DateTime, такие как, например, добавление данных, не создает новые объекты DateTime – все изменения производятся с исходным объектом. Всегда помните об этом, когда ваши приложения используют объекты DateTime.

В PHP 5.5 введен новый класс, который задает новые объекты, не поддерживавшиеся предыдущими версиями.
Функция diff не единственный способ, которым можно генерировать объект DateInterval . Так как это отдельный класс, новые объекты можно инициировать обычным способом:

Значения года / месяца / дня и т.д., передаются в конструктор в виде строки. Более подробную информацию можно найти в справочной документации .

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

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

Вы также можете изменить часовые пояса по ходу работы. Для этого, как вы уже догадались, сначала мы должны создать объект Timezone :

Также вы можете задать часовой пояс при создании нового объекта DateTime :

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

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

DatePeriods

Я думаю, что в официальном руководстве дано наиболее подходящее определение:
« DatePeriods позволяет перечислить множества дат и времен, повторяющихся через определенные интервалы времени в течение заданного периода ».

DatePeriod позволяет создать набор объектов DateTimes, используя два дня, ограничивающие временной интервал. Основными элементами набора являются: дата начала периода, интервал и дата окончания. Для каждого временного интервала создается новый объект DateTime.

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

Результат обработки будет выглядеть таким образом:

Теперь по умолчанию объект DatePeriod включает дату начала временного интервала. Однако с помощью четвертого аргумента можно пропустить начальную дату:

Теперь давайте посмотрим, сколько дней рождения успел отпраздновать Нео, до того, как родился Шелдон:

Расширения

Все классы, которые мы сегодня рассмотрели, могут быть расширены под использование в сочетании с собственными методами. Одно из самых популярных расширений — это использование объекта DateTime с методом __ ToString , которое позволяет выводить корректно DateTime без обращения к формату.

Несколько примеров использования

Лично я в своей практике часто использую объекты DateTime, когда имею дело со столбцами базы данных, в которых записываются значения даты / времени. Все даты хранятся в таблице в виде даты по Гринвичскому времени.

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

Я могу работать с временным объектом, исчисляемым по Нью-Йоркскому времени, и не заботиться о его формате, когда данные записываются в базу данных. Я могу легко переключаться между форматом Unix и регулярным форматом даты-времени в любой момент, мои приложения обрабатывают только объекты DateTime.

Я также использовал объект DateInterval , чтобы упростить логику скрипта, обрабатывающего поступающие платежи за подписку. Использовав объекты DateInterval для определения интервалов между двумя регулярными платежами, я сделал его намного проще.

Мне всего лишь нужно применить заданный интервал к дате последней оплаты.
У вас есть свои собственные примеры работы с датой / временем? Поделитесь ими в комментариях.

На будущее

Расширение DateTime может иметь столь большое количество применений. Если вы следите за последними событиями в этой области, то знаете, что появились новые классы и интерфейсы, принятые уже после PHP 5.5 .

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

Данная публикация представляет собой перевод статьи « Dates and Time – The OOP Way » , подготовленной дружной командой проекта Интернет-технологии.ру

Работа с датой и временем в PHP

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

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

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

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

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

Сек Время
60 Одна минута
3600 Один час
28800 8 часов
86400 Один день
604800 Одна неделя

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

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

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

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


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

Функция strtotime()

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

Вызов
strtotime(“Friday”) Пятница, полночь
strtotime(“2008-10-01”) 1 октября 2008 г, полночь
strtotime(“-2 months”) Два месяца назад с текущего момента

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

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

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

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

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

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

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

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

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

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

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

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

Работа с датой время [закрыт]

В бд хранится дат время в таком формате 1486983600187. Как мне получить читабельный? PHP.

Закрыт по причине того, что необходимо переформулировать вопрос так, чтобы можно было дать объективно верный ответ участниками ermak0ff, user194374, Denis Bubnov, Kromster says support Monica, Akina 9 фев ’17 в 20:00 .

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

4 ответа 4

1486983600187 — это unix-like timestamp в миллисекундах, скорее всего получен из Javascript.

Для получения обычного unix-timestamp его нужно разделить на 1000;

Для получения из timestamp даты-времени в нужном формате существует функция date

Используйте DateTime::createFromFormat и формат U документация

Либо средствами sql

В бд хранится дат время в таком формате 1486983600187.

Hадо было указать, в какой именно СУБД. Предполагаю, что это MySQL. В таком случае гораздо разумнее сразу от сервера получать дату-время, приведённые к нужному типу и отформатированные в нужный вид.

Кроме того, надо было указать тип поля, в котором хранится такое значение. Потому как 1486983600187 для хранения в СУБД ни под UNIXTIME, ни под TIMESTAMP не подходит (для первого слишком велико, а для второго слишком мало).

Если vp_arth прав, и это UNIXTIME, умноженный на 1000,

Текущая дата и время в php

Получим текущую дату.

В вышеприведенном примере дата будет выводиться числами в формате дд/мм/гг. В данной статье мы рассмотрим то, как выводить время и дату в любом удобном для вас формате.

Функция date предназначена как для выведения времени и даты, так и преобразования временной метки в нужный формат. Метка представляет собой количество секунд, которые прошли с даты основания linux. Для получения данного числа существует функция time (), а наличие временной метки в date необязательно.

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

Параметр Описание Что возвращает a нижний регистр, выведение am или pm «am» или «pm» A верхний регистр, выведение AM или PM «AM» или «PM» d текущий день, 2 цифры с первым 0 «01»-«31» F Полное название месяца «February» g 12-часовой формат времени, 0 в начале отсутствует «1» до «12» G 24-часовой формат времени, с отсутствием в начале 0 «0»-«24» h часы, 12-часовой формат, первый ноль. «01»-«12» H часы, 24-часовой формат, первый ноль. «00» до «24» i минуты «00»-«59» I 1 (день) и 0 (ночь) «1»,»0″ j текущий день, 2 цифры без 0 в начале «1»-«31» l Полное название текстом текущего дня недели «Monday» L 1 — если високосный год, в других случаях ноль «1»-0″ m Месяц с 0 в начале «01»-12″ M Первые три буквы названия текущего месяца “Feb” n месяц (без нуля в начале) «1»- «12» r вывод времени и даты в формате RFC 822 «Thu, 21 Dec 2000 16:01:07 +0200» s секунды. «00» до «59» S Английское окончание «th» или «nd» t Число дней в месяце «28»-«31» T Часовой пояс «MDT» U Число секунд с начала века «999869506» w День недели по счету «0»(вс)-«6″(сб) Y Год в виде 4 цифр «2015» y Год в виде 2 цифр «15» z день в году «0»-«365» Z часовой пояс от Гринвича, выраженный в секундах (положительная для востока, отрицательная для запада) «-43200» — «43200»

Неуказанные в таблице цифры, буквы и символы будут выводиться в том виде, в котором они есть.

Выведет Tuesday 04th of September 2001 05:1:28 PM
Обратите внимание на ds = 04th , d -день и s — окончание

Также вы можете присвоить функцию элементу массива или переменной.

Получим: Текущее время: 18:32:17 и дата: 12.03.15

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

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

(PHP 4, PHP 5, PHP 7)

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

Описание

Возвращает строку, отформатированную в соответствии с указанным шаблоном 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 Порядковый номер дня недели от (воскресенье) до 6 (суббота)
z Порядковый номер дня в году (начиная с 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, если год високосный, иначе .
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-часовом формате без ведущего нуля от до 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, если дата соответствует летнему времени, в противном случае.
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 всегда возвращает при использовании gmdate() .

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

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

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

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

Ошибки

Каждый вызов к функциям даты/времени при неправильных настройках временной зоны сгенерирует ошибку уровня E_NOTICE , и/или ошибку уровня E_STRICT или E_WARNING при использовании системных настроек или переменной окружения TZ . Смотрите также date_default_timezone_set()

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

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

Версия Описание
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
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()

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

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

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

Ещё несколько примеров использования функции 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).

Начиная с версии PHP 5.1, временную метку начала запроса можно получить из поля $_SERVER[‘REQUEST_TIME’] .

Смотрите также

  • gmdate() — Форматирует дату/время по Гринвичу
  • idate() — Преобразует локальное время/дату в целое число
  • getdate() — Возвращает информацию о дате/времени
  • getlastmod() — Определение времени последней модификации страницы
  • mktime() — Возвращает метку времени Unix для заданной даты
  • strftime() — Форматирует текущую дату/время с учетом текущих настроек локали
  • time() — Возвращает текущую метку времени Unix
  • strtotime() — Преобразует текстовое представление даты на английском языке в метку времени Unix
  • Предопределенные константы даты и времени

Примеры использования даты и времени на php

В распределенных системах, время играет особую роль. Из-за незначительного расхождения системных часов игрок на Forex может потерять тысячи долларов.

PHP дата и время

В распределенных системах, таких, как Интернет, время играет особую роль. Из-за незначительного расхождения системных часов игрок на рынке Forex может потерять десятки тысяч долларов в течение нескольких минут; система деловой разведки ошибется в составлении прогноза; серверы NNTP в процессе синхронизации потеряют важную информацию, нужную пользователю и т.д. PHP содержит множество функций для работы с датой и временем. Наиболее употребимыми являются:

— возвращает текущее абсолютное время. Это число равно количеству секунд, которое прошло с полуночи 1 января 1970 года (с начала эпохи UNIX).

— считывает информацию о дате и времени. Возвращает ассоциативный массив, содержащий информацию по заданному или по текущему (по умолчанию) времени. Массив содержит следующие элементы:

seconds Секунды (0-59)
minutes Минуты (0-59)
hours Часы (0-23)
mday День месяца (1-31)
wday День недели (0-6), начиная с воскресенья
mon Месяц (1-12)
year Год
yday День года (0-365)
weekday Название дня недели (например, Friday)
month Название месяца (например, January)
Абсолютное время

— форматирование даты и времени. Аргументы: строка формата и абсолютное время. Второй аргумент необязателен. Возвращает строку с заданной или текущей датой в указанном формате. Строка формата может содержать следующие коды:

a Включено обозначение «am» или «pm»
A Включено обозначение «AM» или «PM»
d День месяца (01-31)
D Сокращенное название дня недели (три буквы)
F Полное название месяца
g Часы (12-часовой формат без ведущих нулей)
G Часы (24-часовой формат без ведущих нулей)
h Часы (12-часовой формат)
H Часы (24-часовой формат)
i Минуты (00-59)
j День месяца без ведущих нулей (1-31)
l Полное название дня недели
L Признак високосного года (0 или 1)
m Месяц (01-12)
M Сокращенное название месяца (три буквы)
n Месяц (1-12)
s Секунды (00-59)
t Количество дней в данном месяце (от 28 до 31)
U Абсолютное время
w Номер дня недели (0 — воскресенье, 6 — суббота)
y Год (два разряда)
Y Год (четыре разряда)
z День года (0-365)
Z Смещение часового пояса в секундах (от -43200 до 43200)

Любая другая информация, включенная в строку формата, будет вставлена в возвращаемую строку. Если в строку формата нужно добавить символы, которые сами по себе являются кодами формата, то перед ними надо поставить обратную косую черту «\». Символы, которые становятся кодами формата при добавлении к ним обратной косой, нужно предварять двумя косыми. Например, если необходимо добавить в строку «n», то надо ввести «\\n», поскольку «\n» является символом новой строки.

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

— проверка правильности даты. Аргументы: месяц, день, год. Возвращает true, если дата правильная, т.е.

  1. месяц — целое число от 1 до 12;
  2. день — целое число, не превышающее общего количества дней в данном месяце. При этом високосные годы обрабатываются корректно;
  3. год — целое число от 1 до 32767.

Внимание! Дата может находиться в допустимом диапазоне, но остальные функции работы с датами не примут это значение. Так, нельзя использовать mktime() для годов до 1902, а также следует использовать ее осторожно для годов до 1970.

— формирование локальной даты и времени. Аргументы: строка формата и абсолютное время. Второй аргумент необязателен. Возвращает строку с заданной или текущей датой в указанном формате. При этом названия месяцев и дней недели извлекается из локали, выбранной с помощью функции setlocate( )
Строка формата может содержать следующие коды:

%a Сокращенное название дня недели
%A Полное название дня недели
%b Сокращенное название месяца
%B Полное название месяца
%c Предпочтительный формат даты и времени
%C Номер века
%d День месяца (1-31)
%D То же, что и %m/%d/%y
%e Месяц (1-12)
%h То же, что и %b
%H Часы (24-часовой формат)
%I Часы (12-часовой формат)
%j День года (0-365)
%m Месяц (1-12)
%M Минуты
%n Символ новой строки
%p Включено обозначение «am» или «pm»
%r Время с использованием a.m./p.m.-нотации
%R Время в 24-часовом формате
%S Секунды (00-59)
%t Символ табуляции
%T То же, что и %H:%M:%S
%u Номер дня недели (1 — понедельник, 7 — воскресенье)
%U Номер недели. Отсчет начинается с первого воскресенья года
%V Номер недели по ISO 8601:1988. Первая неделя должна иметь не менее четырех дней, а понедельник считается первым днем
%W Номер недели. Отсчет начинается с первого понедельника года
%w Номер дня недели (0 — воскресенье, 6 — суббота)
%x Предпочтительный формат даты без времени
%X Предпочтительный формат времени без даты
%y Год (два разряда)
%Y Год (четыре разряда)
%Z Часовой пояс (имя или сокращение)
%% Символ «%»

Любая другая информация, включенная в строку формата, будет вставлена в возвращаемую строку.

Функции для работы с датой и временем

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

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

Эти функции всегда доступны.

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

Данное расширение не определяет никакие директивы конфигурации в php.ini .

Данное расширение не определяет никакие типы ресурсов.

Данное расширение не определяет никакие константы.

Работа с датами и временем в PHP

Описание: Основным временным данным, используемым в PHP, является время в секундах, прошедшее с начала 1 января 1970 года. Это временное данное называется в PHP меткой времени (timestamp).

Дата добавления: 2014-08-04

Размер файла: 8.11 KB

Работу скачали: 0 чел.

Поделитесь работой в социальных сетях

Если эта работа Вам не подошла внизу страницы есть список похожих работ. Так же Вы можете воспользоваться кнопкой поиск

Работа с датами и временем в PHP

Основным временным данным, используемым в PHP, является время в секундах, прошедшее с начала 1 января 1970 года. Это временное данное называется в PHP меткой времени (timestamp).

Получить метку времени для заданной даты и времени можно с помощью функции

int mktime( [ int hour [, int minute [ , int second

[ , int month [ , int day [ , int year ]]]]]] )

где hour , minute и second – значения соответственно часа, минуты и секунды, month – значение индекса месяца (от 1 до 12), day – значение дня в месяце (от 1 до 31), year – значение года. Если параметры, начиная с некоторого параметра, пропущены, то они заменяются значениями текущей даты и времени.

Получить метку времени для текущей даты и текущего времени можно с помощью функции

Для получения компонент даты и времени по заданной метке времени timestamp используется функция

array getDate( [ int timestamp ] ) .

Если параметр при вызове функции не задан, выводятся компоненты для текущей даты и текущего времени. Функция возвращает ассоциативный массив со следующими ключами и значениями даты и времени:

  • ‘ seconds ‘ – количество секунд (от 0 до 59);
  • ‘ minutes ‘ – количество минут (от 0 до 59);
  • ‘ hours ‘ – количество часов (от 0 до 23);
  • ‘ mday ‘ – число в месяце (от 1 до 31);
  • ‘ wday ‘ – индекс дня недели в месяце (от 0 – воскресенье до 6 – суббота);
  • ‘ mon ‘ – индекс месяца (от 0 –январь до 11 – декабрь);
  • ‘year’ – год (четыре цифры);

возвращает ассоциативный массив со следующими ключами и значениями времени:

  • ‘ sec ‘ – количество секунд, прошедших с 1 января 1970 года до текущего момента;
  • ‘ usec ‘ – количество микросекунд, прошедших с последней секунды;
  • ‘ minuteswest ‘ – смещение к западу от Гринвича (в минутах);
  • ‘ dsttime ‘ – тип коррекции летнего времени – DST ( Daylight Saving Time – светосберегающее время) ( 1 – летнее время, 0 – зимнее время, -1 – тип коррекции не определен).
  • Функция
  • bool checkDate(int month, int day, int year)
  • возвращает true , если дата ( month – индекс месяца, day – день в месяце и year – год) является правильной и false – в противном случае. Дата считается правильной, если значение года лежит в диапазоне от 1 до 32767 включительно, значение индекса месяца лежит в диапазоне от 1 до 12, а день – в диапазоне от 1 до максимального значения для данного месяца – 30 или 31. Для количества дней в феврале (28 или 29) учитывается, является ли год високосным.
Илон Маск рекомендует:  Директива RewriteLock файла .htaccess
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL