php функции работы с датой
PHP5 Дата и время
Функция PHP date(), используется для форматирования даты и/или времени.
PHP Функция date()
Синтаксис
PHP Получить простую дату
Необходимый параметр формат функции date() определяет, как форматировать дату (или время).
Вот некоторые символы, которые обычно используются для дат:
Пример ниже, форматирует сегодняшнюю дату тремя различными способами:
Пример
PHP Год авторского права
Пример
PHP Получить простое время
Вот некоторые символы, которые обычно используются для времени:
В примере ниже выводится текущее время в указанном формате:
Пример
Обратите внимание, что PHP функция date() вернет текущую дату/время сервера!
PHP Получить свой часовой пояс
Если время, которое вы получили от кода не является правильным время, это, вероятно, потому, что ваш сервер находится в другой стране или настроить для другой часовой пояс.
Так, если вам нужно чтобы время было правильным согласно специфическому местоположению, можно использовать установку часового пояса.
В примере ниже задается часовой пояс «Россия/Пермь», затем, выводит текущее время в указанном формате:
Пример
PHP Создать метку времени
Необязательный параметр timestamp в функции date() задает метку времени. Если Вы не укажите метку времени, будет использоваться текущая дата и время (как показано в примеры выше).
Функция mktime() возвращает метку времени Unix для даты. Временная метка Unix содержит количество секунд между эпохой Unix (1 января 1970 00:00:00 GMT) и время уточняется.
Синтаксис
Пример ниже создает дату и время из нескольких параметров в функции mktime() :
Пример
PHP Создать дату из строки
Синтаксис
Пример ниже создает дату и время из функции strtotime() :
Пример
PHP довольно грамотно преобразовывает строку в дату, так что можно вставить в различные значения:
Пример
Однако, функция strtotime() не идеалена, поэтому не забудьте проверить строки, которые вы туда вставили.
Еще примеры дат
В приведенном ниже примере, выводятся даты для следующих шести суббот:
Пример
Пример ниже выводит количество дней до 4 июля:
Пример
PHP Полный справочник дат
Для полной справки всех функций даты, пройдите к нашему полному PHP Справочик дат.
Справочник содержит краткое описание и примеры использования для каждого функция!
Дата и время – метод OOP
Расширение PHP Date/Time представляет собой набор классов, которые позволяют решать практически все задачи, связанные с датой и временем.
А теперь не позволите ли мне дать два вам два небольших совета: оба, я уверен, помогут вам в решении практических задач.
От date() к DateTime
После этого мы сможем выполнять различные интересные манипуляции с ним. Новый объект создается точно так же, как и любой другой класс PHP :
Конструктор по умолчанию принимает для него значение « сейчас » — текущие время и дата. Чтобы создать объект для определенной даты, вы должны присвоить ему значение этих даты и времени.
Определение форматов для объекта, как правило очень интуитивно. Ниже приводятся несколько примеров создания объектов DateTime :
Если в ней отсутствует нужный вам формат, вы всегда можете задать свой собственный с помощью функции DateTime :: createFromFormat :
Формат времени для Unix:
Изменение даты/времени:
Работа с несколькими датами
Скажем, вам нужно сравнить два дня рождения:
Еще один сценарий сравнения двух дат. Мы можем сравнить их вот таким образом:
Это публичные свойства. Вы можете создать и собственный привлекательный формат вывода объекта DateInterval :
Примечание : Изменения в объекте DateTime, такие как, например, добавление данных, не создает новые объекты DateTime – все изменения производятся с исходным объектом. Всегда помните об этом, когда ваши приложения используют объекты DateTime.
Работа с часовыми поясами
При создании новых объектов DateTime, второй аргумент конструктора предназначен для задания часового пояса. Если мы пропускаем его, тогда часовой пояс присваивается по умолчанию, на основании значения date.timezone файла php.ini. Вы можете изменить его в любое время через функцию date_default_timezone_set :
Вы также можете изменить часовые пояса по ходу работы. Для этого, как вы уже догадались, сначала мы должны создать объект Timezone :
Также вы можете задать часовой пояс при создании нового объекта DateTime :
Опять же, важно помнить, что функция setTimezone изменяет ваш исходный объект DateTime. Обычно, когда мы используем метод setTimezone задача у нас стоит так: « привязать эту дату, к этому часовому поясу ». В последнем же примере нам наоборот нужно было « создать дату в конкретном часовом поясе ».
DatePeriods
Я думаю, что в официальном руководстве дано наиболее подходящее определение:
« DatePeriods позволяет перечислить множества дат и времен, повторяющихся через определенные интервалы времени в течение заданного периода ».
DatePeriod позволяет создать набор объектов DateTimes, используя два дня, ограничивающие временной интервал. Основными элементами набора являются: дата начала периода, интервал и дата окончания. Для каждого временного интервала создается новый объект DateTime.
Предположим, мы хотим получить все дни рождения Шелдона с момента его рождения:
Результат обработки будет выглядеть таким образом:
Теперь по умолчанию объект DatePeriod включает дату начала временного интервала. Однако с помощью четвертого аргумента можно пропустить начальную дату:
Теперь давайте посмотрим, сколько дней рождения успел отпраздновать Нео, до того, как родился Шелдон:
Расширения
Несколько примеров использования
Лично я в своей практике часто использую объекты DateTime, когда имею дело со столбцами базы данных, в которых записываются значения даты / времени. Все даты хранятся в таблице в виде даты по Гринвичскому времени.
Код приложения работает только с объектами DateTime, однако пока в ходе обработки запроса не будут сгенерированы даты в соответствующих форматах, все они исчисляются в часовом поясе по Гринвичу. Данный подход позволил мне довольно просто работать с датами, которые принадлежат разным часовым поясам.
Я могу работать с временным объектом, исчисляемым по Нью-Йоркскому времени, и не заботиться о его формате, когда данные записываются в базу данных. Я могу легко переключаться между форматом Unix и регулярным форматом даты-времени в любой момент, мои приложения обрабатывают только объекты DateTime.
Мне всего лишь нужно применить заданный интервал к дате последней оплаты.
У вас есть свои собственные примеры работы с датой / временем? Поделитесь ими в комментариях.
На будущее
С ними вы можете ознакомиться в справочной документации. Спасибо, что уделили внимание моей статье.
PHP | Дата и время
В этом уроке рассмотрм, как на практике использовать функции PHP по получению даты и времени, а также рассмотрим способы вывода и форматирования даты и времени. Функции PHP, обрабатывающие дату и время, позволяют получать дату и время с того сервера, на котором выполняется сценарий. Также эти функции позволяют нам редактировать и форматировать полученные временные значения перед их отображением (выводом) на экран.
Функция PHP date()
Функция date() выводит текущие дату и время в заданном формате. Также функция может конвертировать формат отметки времени (временная метка, метка времени или timestamp) в удобочитаемый формат.
Синтаксис
Параметры функции date():
Примечание: Отметка времени — это последовательность символов, обозначающая дату и / или время, когда произошло определенное событие.
Обязательный параметр format функции date() указывает, как форматировать дату (или время). Формат задается управляющими командами (латиницей), при этом можно вставлять любые разделители между ними (дефисы, двоеточие и так далее).
Ниже представлена таблица с расшифровкой некоторых символов в строке format :
Символ в строке format | Описание | Пример возвращаемого значения |
---|---|---|
День | — | — |
d | День месяца с 2-мя цифрами | от 01 до 31 |
D | День недели в текстовом формате, 3 символа | от Mon до Sun |
z | Порядковый номер дня в году (начиная с 0) | От 0 до 365 |
Месяц | — | — |
F | Полное название месяца, например, January или March | от January до December |
m | Порядковый номер месяца, 2 цифры | от 01 до 12 |
M | Сокращенное название месяца, 3 символа | от Jan до Dec |
Год | — | — |
Y | Порядковый номер года, 4 цифры | Примеры: 1999, 2019 |
y | Порядковый номер года, 2 цифры | Примеры: 99, 19 |
Время | — | — |
a | Ante meridiem (лат. «до полудня») или Post meridiem (лат. «после полудня») в нижнем регистре | am или pm |
A | Ante meridiem или Post meridiem в верхнем регистре | AM или PM |
g | Часы в 12-часовом формате | от 1 до 12 |
G | Часы в 24-часовом формате | от 0 до 23 |
h | Часы в 12-часовом формате | от 01 до 12 |
H | Часы в 24-часовом формате, 2 цифры | от 00 до 23 |
i | Минуты, 2 цифры | от 00 до 59 |
s | Секунды, 2 цифры | от 00 до 59 |
Ниже представлены некоторые примеры получения фактической информации о дате и времени:
Получение даты и времени в PHP. Функция date
Вместо предисловия
Среди задач, с которыми регулярно сталкивается программист, очень часто встречаются разнообразные манипуляции с датами (dates) и временем (time). Никто не будет спорить с тем, что эти значения (символы, параметры) чрезвычайно важны. И база данных, и любая цифровая автоматизированная система не способны корректно работать, если нет точного времени, а также если информация о времени выполнения того либо иного процесса не сохраняется. Вот лишь некоторые примеры использования временных параметров: — элементарное добавление даты в запись БД; — отображение времени; — вывод дат в различном формате; — проверка текущего времени на соответствие заданному таймеру; — определение срока между 2-мя датами и так далее.
Чтобы работать со временем было удобно, у каждого языка программирования имеются специальные типы данных, позволяющие хранить соответствующие значения. Обычно речь идёт о числовом значении, как целом, так и с плавающей точкой.
В языке программирования PHP работу со временем символизирует UNIX TIMESTAMP. То есть время тут хранится в виде целого числа, а его исчисление начинается с полуночи 1.01.1970 — с так называемой нулевой даты, принятой в Unix и прочих POSIX-совместимых ОС (ещё эту дату называют «Unix-время»). В результате возвращается число секунд, которое прошло с начала Эпохи Unix.
Прежде чем приступить к дальнейшему изложению материала, следует определить текущее значение времени в формате UNIX TIMESTAMP. Делается это с помощью простейшего кода и функции time:
На момент написания материала было 14 октября 2020 года, поэтому в терминале отобразилось следующее:
Вы можете проверить вышеописанную команду и получить в PHP текущую дату и время самостоятельно, даже если не являетесь PHP-разработчиком — просто поместите код в любой онлайн-компилятор, вот один из многих. Так же рекомендуется делать и с остальным кодом — это поможет вам лучше понять работу описываемых в статье команд.
Но вернёмся к основной теме разговора. Благодаря коротенькому коду выше, мы получили от сервера текущее время — 1602666005 (у вас значение будет другим, ведь время не стоит на месте))).
Можно согласиться с тем, что для человека такой формат не очень удобен. Но на деле, чем проще представление данных, тем быстрее осуществляется обработка этих данных компьютерным устройством. Да и хранить такие значение в БД в плане ресурсов экономнее, чем при использовании специальных форматов. В итоге PHP работает со значениями времени одинаково на разных платформах (и Unix, и Windows), в результате чего обеспечивается универсальность использования кода.
Если же говорить об удобстве пользователя, то у разработчиков есть масса средств это удобство обеспечить.
Функция date
Эта функция возвратит пользователю строку в форме даты/времени, сделав это в определённом формате. Формат этот определяет сам пользователь.
Синтаксис функции выглядит так:
Видно, что формат указывается в качестве аргумента. Этим аргументом могут выступать самые разные символы, коих существует целая таблица:
Теперь давайте попробуем, как эта таблица работает на практике. Выведем текущий день недели:
У меня получился Wednesday, а вот что отобразится в консоли у вас, зависит от дня недели, в который вы напишете эту команду.
Теперь выведем дату в виде YYYY-ММ-DD:
А потом и дату, и время:
Описание time и mktime
Уже упоминалось, что time возвратит количество секунд с начала т. н. эпохи Unix и вплоть до текущего времени. Однако на практике эта функция чаще используется не в «чистом виде», а вместе с иными функциями.
Для начала займёмся её использованием вместе с меткой текущей даты:
Теперь стоит поговорить о том, каким образом с функцией time используется mktime. Именно mktime возвращает метки времени Unix для даты, которую укажет пользователь.
Аргументы могут быть разные, а также опущены справа налево:
Лучше всего рассмотреть вышеописанное на примере. Давайте выведем в терминал: — текущую полную дату и время (часы, минуты, секунды); — время и дату завтрашнего дня; — время и дату следующего месяца того же дня; — ту же дату, но уже прошедшего года.
На этом всё. Если интересуют более сложные и продвинутые знания по PHP, обратите внимание на соответствующий курс в OTUS!
PHP Дата и Время – используем ООП для работы с датой и временем
PHP расширение для работы с датой и временем, это набор классов, которые позволяют решать множество задач. Данные функции доступны начиная с 5.2 версии, были представлены несколько классов, каждый из которых отображал сценарий реального времени:
— Дата и время представлялись с помощью DateTime объекта.
— Часовой пояс представлялся с помощью DateTimeZone.
— DateInterval объекты представляют интервал времени. Например, когда нам необходимо отсчитать 2 дня или часа от текущего времени. Этот объект не основывается на конкретном времени, это просто интервал.
— DatePeriod представляет период между двумя датами.
Теперь мы рассмотрим реальное применение вышесказанного.
Date() и DateTime
Если нам нужно получить дату, мы используем date(), это просто и работает. Всего лишь передать желаемый формат даты. Только это не совсем удобно на практике, например, когда необходимо изменять время в зависимости от временной зоны.
DateTime делает больше, нежели просто возвращает дату. Перед тем как это использовать необходимо инициировать новый DateTime объект. Делается это как и в любом другом PHP классе:
Конструктор DateTime принимает строку как параметр, на данный момент строка пустая, установлена текущая дата и время по умолчанию.
Для создания определенной даты, необходимо передать условие для конструктора. Ниже можете увидеть некоторые из них, которые весьма понятны:
Полный список доступных форматов можно найти в официальной документации.
Если не найдете подходящий формат времени, вы можете определить его сами с помощью DateTime::createFromFormat.
Теперь, когда мы держим в руках готовый DateTime объект, мы можем делать много интересных вещей.
Временной штамп Unix
Изменение Даты и Времени
Работа с несколькими датами
Теперь, когда вы осведомлены с DateTime, ваши приложения будут сложены проще и грамотнее. Надеемся теперь вы любите даты более чем когда либо.
Сейчас мы рассмотрим работу с некоторыми математическими вычислениями. Скажем, нам необходимо сравнить две даты рождения:
Это можно сделать с помощью другого сценария. Вот так:
Вызов функции diff возвращает DateInterval объект. Вот как он выглядит:
Это public свойства. Вы можете генерировать интересные штуки на основании этого объекта.
Самое полезное, то что можно применить DateInterval объект к другому аналогичному DateInterval объекту.
Заметьте: Модификация DateTime, например как в случае высше, не возвращает новый объект, просто видоизменяет прежний. Держите это во внимании когда работаете со своим приложением. PHP 5.5 представил новый класс, который возвращает новый объект после модификации.
Diff это не единственный способ получить объект интервала. Так как это класс, новый объект может быть создан как обычно:
Передается в конструктор количество лет, месяцев, дней и т.д. Более информации можно найти в документации о конструкторе.
Работа с часовыми поясами
Когда создаем новый DateTime объект, второй аргумент определяет часовой пояс. Если мы упустим этот аргумент, временная зона будет взята с php.ini date.timezone. Вы можете изменять это на лету с помощью вызова date_default_timezone_set:
Вы также можете изменять часовой пояс с помощью объекта DateTimeZone:
Можно определять временную зону в процессе создания DateTime объекта:
Важно помнить, что setTimezone изменяет оригинальный объект DateTime. Мы запрашиваем изменить данную дату в соответствии с временной зоной. С другой стороны, в последнем примере, мы передали временную зону в конструктор, говоря: «Дата которую я создаю, находится в этой временной зоне».
Список доступных часовых поясов доступен в документации.
Периоды даты и времени
Думаю, официальная документация предоставляет наиболее понятные объяснения:
Позволяет перемещаться в заданном временном интервале на равные промежутки времени.
DatePeriod генерирует коллекцию времен в определенном диапазоне, через заданные интервалы. Нам нужно передать стартовую дату, интервал и конечную дату. На каждый интервал создается новый объект DateTime.
Предположим, что мы хотим получить все дни рождения Шэлдона, начиная с его рождения:
Результат будет следующим:
Сейчас периоды вмещают стартовую дату также. Можно исключить ее, передав четвертый аргумент в конструктор:
Давайте посмотрим, сколько раз Neo праздновал день рождение еще до рождения Шэлдона:
Расширение
Все классы, которые мы рассмотрели сегодня, могут быть расширены с помощью собственных методов. Самый распространенный способ создавать функцию __toString, которая позволит отображать DateTime объект без вызова format.
Что еще?
Как видите, это расширение даты и времени предлагает большие возможности. В последних версиях PHP есть новые классы, достаточно взглянуть в документацию.
У вас есть хорошие примеры использования даты и времени в PHP? Поделитесь ими в комментариях ниже! Всем спасибо за чтение.