- date_diff
- Список параметров
- Возвращаемые значения
- Примеры
- Смотрите также
- User Contributed Notes
- Возраст | PHP и JavaScript
- Правильное склонение по-русски: «год», «года», «лет» в JavaScript
- Сравнение дат в формате «год месяц день»
- Вычисление возраста по дате рождения
- Подсчёт разницы лет
- Определить количество дней между двумя датами
- Как посчитать разницу между датами в годах на PHP
- «Год», «года», «лет» в зависимости от числа
- Рассчитать возраст на PHP
- Возраст со словом «год», «года» или «лет»
- 11 комментариев:
- Как определять количество лет, месяцев, дней между датами?
- Как правильно склонить год в php?
- Войдите, чтобы написать ответ
- Через раз работает кнопка показать ещё и вовсе не работает поиск. Что делать?
date_diff
Возвращает разницу между двумя объектами DateTimeInterface .
Список параметров
Дата и время для сравнения.
Используется, чтобы вернуть абсолютную разницу.
Возвращаемые значения
DateInterval объект представляет разницу между двумя датами.
Возвращаемое значение более конкретно представляет временной интервал для применения к исходному объекту ( $this или $originObject ), чтобы прийти к $targetObject . Этот процесс не всегда обратим.
Метод учитывает смену часовых поясов и поэтому может возвращать интервал 24 hours and 30 minutes , как в одном из примеров. Если вы хотите рассчитывать по абсолютному времени, вам необходимо сначала преобразовать $this / $baseObject и $targetObject в UTC.
Примеры
Пример #1 Пример использования DateTimeImmutable::diff()
$origin = new DateTimeImmutable ( ‘2009-10-11’ );
$target = new DateTimeImmutable ( ‘2009-10-13’ );
$interval = $origin -> diff ( $target );
echo $interval -> format ( ‘%R%a дней’ );
?>?php
$origin = date_create ( ‘2009-10-11’ );
$target = date_create ( ‘2009-10-13’ );
$interval = date_diff ( $origin , $target );
echo $interval -> format ( ‘%R%a дней’ );
?>?php
Результат выполнения данных примеров:
Пример #2 Пример использования DateTimeInterface::diff() во время перехода на летнее время
$originalTime = new DateTimeImmutable ( «2021-10-30 09:00:00 Europe/London» );
$targedTime = new DateTimeImmutable ( «2021-10-31 08:30:00 Europe/London» );
$interval = $originalTime -> diff ( $targedTime );
echo $interval -> format ( «%H:%I:%S (Полных дней: %a)» ), «\n» ;
?>?php
Результат выполнения данного примера:
Пример #3 Сравнение объектов DateTime
$date1 = new DateTime ( «now» );
$date2 = new DateTime ( «tomorrow» );
?php
var_dump ( $date1 == $date2 );
var_dump ( $date1 < $date2 );
var_dump ( $date1 > $date2 );
?>
Результат выполнения данного примера:
bool(false) bool(true) bool(false)
Смотрите также
- DateInterval::format() — Форматирует интервал
- DateTime::add() — Изменяет объект DateTime, добавляя количество дней, месяцев, лет, часов, минут и секунд
- DateTime::sub() — Изменяет указанный объект DateTime, вычитая указанный объект DateInterval.
User Contributed Notes
Возраст | PHP и JavaScript
Фраза «мы работаем с 1880 года» звучит менее впечатляюще, чем «мы работаем более ». Можно, конечно, из года в год 1 января менять цифру «», а можно написать короткий скрипт, который сам рассчитает правильное количество лет.
Правильное склонение по-русски: «год», «года», «лет» в JavaScript
Сравнение дат в формате «год месяц день»
Вычисление возраста по дате рождения
Подсчёт разницы лет
Определить количество дней между двумя датами
Как посчитать разницу между датами в годах на PHP
«Год», «года», «лет» в зависимости от числа
echo YearTextArg(date('Y')-1880); ?>
Рассчитать возраст на PHP
29/02/1880') ->diff(new DateTime('now')) ->y; echo $age; ?>
Возраст со словом «год», «года» или «лет»
29/02/1880') ->diff(new DateTime('now')) ->y; function YearTextArg($year) < $m = substr($year,-1,1); $l = substr($year,-2,2); return $year. ' ' .((($m==1)&&($l!=11))?'год':((($m==2)&&($l!=12)||($m==3)&&($l!=13)||($m==4)&&($l!=14))?'года':'лет')); >echo YearTextArg($age); ?>
11 комментариев:
Анонимный Спасибо, отличные скрипты)) NMitra Благодарю за отзыв! Александр Шаповал Вопрос по «Возраст со словом «год», «года» или «лет»» — последний пример: я, использую этот пример для вычисления возраст юзера в CMS Joomla. Как в строку «RETURN», вместо русских: ‘год’, ‘года’ и ‘лет’, вставить языковую переменную Joomla. Языковая переменная, выглядит вот так:
Заранее благодарю за ответ Александр Шаповал Не пропустило языковую переменную. Дублирую снова: языковая переменная, выглядит вот так: echo JText::_( ‘COM_CCK_LANG_VAR’ ); NMitra А зачем? Тогда нужно три переменных.
Для того, чтобы написать код в комментариях, пожалуйста используйте http://shpargalkablog.ru/2010/12/napisat-kod-tekstom.html Александр Шаповал Ок. Понял.
Так как все же ПРАВИЛЬНО вставить эту переменную вместо ‘год’ — эту: , вместо ‘года’ — эту: и вместо ‘лет’ — эту: ? NMitra Не, вместо ‘год’ пишите сразу JText::_( ‘COM_CCK_LANG_VAR1’ )
Я сама php знаю поскольку постольку, просто он похож на JS Александр Шаповал NMitra, спасибо! Заработало!
Ну и соответственно, нужно задать значения языковым переменным в lang-LANG.overide.ini Vegan Boom Спасибо! В очередной раз нашла в этом блоге нужную информацию.
А подскажите, пожалуйста ещё и это. Как изменить этот код в JavaScript, если хочу, чтобы отражалось следующее:
Возраст автора на момент написания статьи: . лет, . месяцев.
Vegan Boom Дополнение к предыдущему моему комментарию.
Важно, чтобы я могла это вставить в шаблон сообщений. И у каждого конкретного поста ничего бы не нужно было исправлять. Один универсальный код для всех постов. NMitra Дополнила статью примером
Как определять количество лет, месяцев, дней между датами?
Подскажите, как определять сколько прошло времени(лет, месяцев, дней) между двумя датами. Допустим есть первая дата — 2016.08.16 и вторая — 2010.03.15. Между ними нужно определить период.
Как посчитать количество дней между датами?
У меня возник такой вопрос как можно пасчитать количество дней между датами. Вот у меня есть.
Количество лет, месяцев, дней между датами
Здравствуйте. Может подскажите как вывести количество лет месяцев дней между двумя датами? спасибо.
Возврат кол-ва лет, месяцев, дней, часов, минут, секунд между датами
Нужно написать функцию которая возвращает в виде символьной строки количество лет, месяцев, дней.
$firstDate = '2016.08.16'; $secondDate = '2010.03.15'; $firstDateTimeObject = new DateTime($firstDate); $secondDateTimeObject = new DateTime($secondDate); $delta = $secondDateTimeObject->diff($firstDateTimeObject); echo $delta->format('y'); // года echo $delta->format('m'); // месяца echo $delta->format('d'); // дни
Только ошибка:
Fatal error: Uncaught exception ‘Exception’ with message ‘DateTime::__construct() [datetime.—construct]: Failed to parse time string (2016.08.16) at position 5 (0): Double time specification’ in C:\OpenServer\domains\mysite.local\vkdate.php:5 Stack trace: #0 C:\OpenServer\domains\mysite.local\vkdate.php(5): DateTime->__construct(‘2016.08.16’) #1 thrown in C:\OpenServer\domains\mysite.local\vkdate.php on line 5
$firstDateTimeObject = DateTime::createFromFormat('Y.m.d', $firstDate); $secondDateTimeObject = DateTime::createFromFormat('Y.m.d', $secondDate);
echo $delta->format('%y'); // года echo $delta->format('%m'); // месяца echo $delta->format(%'d'); // дни
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
$t = "2006-09-23T20:27:12+03:00"; $d = strtotime(date("Y", strtotime($t)).'-'.date("n", strtotime($t)).'-'.date("d", strtotime($t))); $days = floor((strtotime(date("Y-m-d")) - $d) / 86400); echo $days; //возвращает 3615(так и должно быть) $firstDate = date("Y-m-d"); $secondDate = $d; //сюда надо как то вставить $d, убрав что-то из переменной, но так чтобы результат $days не изменился $firstDateTimeObject = DateTime::createFromFormat('Y-m-d', $firstDate); $secondDateTimeObject = DateTime::createFromFormat('Y-m-d', $secondDate); $delta = $secondDateTimeObject->diff($firstDateTimeObject); echo $delta->format('%y')."лет
"; // года echo $delta->format('%m')."месяцев
"; // месяца echo $delta->format('%d')."дней
"; // дни ?>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
$t = "2006-09-23T20:27:12+03:00"; $d = date("Y", strtotime($t)).'-'.date("n", strtotime($t)).'-'.date("d", strtotime($t)); $days = floor((strtotime(date("Y-m-d")) - strtotime($d)) / 86400); echo $days; //возвращает 3615(так и должно быть) $firstDate = date("Y-m-d"); $secondDate = $d; $firstDateTimeObject = DateTime::createFromFormat('Y-m-d', $firstDate); $secondDateTimeObject = DateTime::createFromFormat('Y-m-d', $secondDate); $delta = $secondDateTimeObject->diff($firstDateTimeObject); echo $delta->format('%y')."лет
"; // года echo $delta->format('%m')."месяцев
"; // месяца echo $delta->format('%d')."дней
"; // дни
Вычислить количество месяцев и дней между датами
В общем-то не охота писать такой код самому. Как уже имеющими средствами (тем же DateTime).
Рассчитать количество месяцев и дней между двумя датами
Нужна ваша помощь. Необходимо расчитать количество месяц и дней или только количество дней между.
Количество месяцев и дней между двумя датами в четырех ячейках
Помогите пожалуйста переделать макрос. Нужно что бы работал с 1-го по 20-й листы, Данные.
Количество месяцев и дней между двумя датами в четырех ячейках
Помогите пожалуйста переделать макрос. Нужно что бы работал с 1-го по 20-й листы, Данные.
Как правильно склонить год в php?
function decline($num, $forms) < return $num%10==1&&$num%100!=11?$forms[0]:($num%10>=2&&$num%10<=4&&($num%100<10||$num%100>=20)?$forms[1]:$forms[2]); > echo $years . ' ' . decline($years, ['год', 'года', 'лет']); // 3 года
function decline($num, $forms) < return $num%10==1&&$num%100!=11?$forms[0]:($num%10>=2&&$num%10<=4&&($num%100<10||$num%100>=20)?$forms[1]:$forms[2]); > echo $years . ' ' . decline($years, ['год', 'года', 'лет']); // 3 года
Kozlov, да ладно. Придут Сишники и начнут придираться мол $num%10 и $num%100 повторяем несколько раз, если дадим большие числа то поплывет производительность, придется наш one-liner разбавить временными переменными для хранения результата. Если хочешь, сам выложи и сделай решением, мне все равно, пользуйся на здоровье )))