Даты всегда являются важной частью любого веб-сайта или приложения, но с ними может быть немного сложнее иметь дело, особенно для начинающих. Вот список нескольких функций PHP и фрагментов кода, которые определенно пригодятся при работе с датами.
Содержание статьи
- 1 Получить текущее время в формате
- 2 Формат даты
- 3 Получить номер недели с даты
- 4 Преобразовать минуты в часы и минуты
- 5 Получите разницу между двумя разами
- 6 Проверьте, находится ли дата в прошлом или будущем
- 7 Рассчитать возраст
- 8 Показать список дней между двумя датами
- 9 Даты в стиле «Тайм назад»
- 10 Обратный отсчет до даты
Получить текущее время в формате
Супер базовая функция, не принимает параметров и возвращает текущую дату. В этом примере используется британское форматирование даты, вы можете изменить его в строке 2.
function nowuk () { дата возвращения ('д / м / г', время ()); }
Формат даты
Самый простой способ конвертировать дату из формата (здесь гггг-мм-дд) в другую. Для более обширных преобразований вы должны взглянуть на класс DateTime для анализа и форматирования.
$ originalDate = "2010-03-21"; $ newDate = date ("d-m-Y", strtotime ($ originalDate));
Источник: Переполнение стека
Получить номер недели с даты
При кодировании вы часто сталкиваетесь с необходимостью получения номера недели определенной даты. Передайте вашу дату в качестве параметра этой изящной функции, и она вернет вам номер недели.
function weeknumber ($ ddate) { $ date = новый DateTime ($ ddate); вернуть $ date-> format ("W"); }
Преобразовать минуты в часы и минуты
Вот очень полезная функция для отображения времени: укажите минуты в виде целого числа (скажем, 135), и функция вернет 02:15
. Handy!
function convertToHoursMins ($ time, $ format = '% 02d:% 02d') { if ($ timeПолучите разницу между двумя разами
Эта функция принимает две даты и возвращает интервал между этими двумя. Результат отображается в часах и минутах, вы можете легко изменить его в строке 5 в соответствии со своими потребностями.
function dateDiff ($ date1, $ date2) { $ datetime1 = новый DateTime ($ date1); $ datetime2 = новый DateTime ($ date2); $ interval = $ datetime1-> diff ($ datetime2); вернуть $ интервал-> формат ('% H:% I'); }Проверьте, находится ли дата в прошлом или будущем
Очень простые условные операторы для проверки, прошла ли дата, настоящее или будущее.
if (strtotime (dateString)> time ()) { # дата в будущем } if (strtotime (dateString) <time ()) { # дата в прошлом } if (strtotime (dateString) == время ()) { # дата сейчас }Источник: Art of Web
Рассчитать возраст
Эта очень удобная функция принимает в качестве параметра дату и возвращает возраст. Очень полезно на веб-сайтах, где вам нужно проверить, что человек старше определенного возраста, чтобы создать учетную запись.
возраст функции ($ date) { $ time = strtotime ($ date); if ($ time === false) { вернуть ''; } $ year_diff = ''; $ date = date ('Y-m-d', $ time); list ($ year, $ month, $ day) = взорваться ('-', $ date); $ year_diff = date ('Y') - $ year; $ month_diff = date ('m') - $ month; $ day_diff = date ('d') - $ day; if ($ day_diff <0 || $ month_diff <0) $ year_diff-; вернуть $ year_diff; }Источник: AP PHP
Показать список дней между двумя датами
Интересный пример того, как отобразить список дат между двумя датами, используя классы DateTime () и DatePeriod ().
// Обязательно установить часовой пояс по умолчанию для работы с функциями DateTime date_default_timezone_set ( 'Америка / Sao_Paulo'); $ start_date = new DateTime ('2010-10-01'); $ end_date = new DateTime ('2010-10-05'); $ period = new DatePeriod ( $ start_date, // 1st PARAM: дата начала new DateInterval ('P1D'), // 2nd PARAM: интервал (в этом случае интервал 1 день) $ end_date, // 3rd PARAM: дата окончания DatePeriod :: EXCLUDE_START_DATE // 4-я PARAM (необязательно): не требует пояснений ); foreach ($ period как $ date) { echo $ date-> format ('Y-m-d'). '
'; // Отображение даты в формате гггг-мм-дд }Источник: Snipplr
Даты в стиле «Тайм назад»
Классическая функция, которая превращает дату в приятное «1 час назад» или «2 дня назад», как это делают многие социальные сети.
function _ago ($ tm, $ rcs = 0) { $ cur_tm = time (); $ dif = $ cur_tm- $ tm; $ pds = array («секунда», «минута», «час», «день», «неделя», «месяц», «год», «декада»); $ lngh = массив (1,60,3600,86400,604800,2630880,31570560,315705600); для ($ v = sizeof ($ lngh) -1; ($ v> = 0) && (($ no = $ dif / $ lngh [$v]) <= 1); $ v--); if ($ v <0) $ v = 0; $ _tm = $ cur_tm - ($ dif% $ lngh [$v]); $ нет = этаж ($ нет); if ($ no <> 1) $ pds [$v]. = 's'; $ x = sprintf ("% d% s", $ no, $ pds [$v]); if (($ rcs == 1) && ($ v> = 1) && (($ cur_tm - $ _ tm)> 0)) $ x. = time_ago ($ _ tm); вернуть $ x; }Источник: CSS Tricks
Обратный отсчет до даты
Простой фрагмент, который берет дату и сообщает, сколько дней и часов осталось до указанной даты.
$ dt_end = new DateTime («3 декабря 2016 г., 14:00»); $ stay = $ dt_end-> diff (new DateTime ()); echo $ остаются -> д. «дни и». $ остаются-> ч. «часы»;Источник: Переполнение стека