Unix-время (англ. Unix time, также POSIX-время) — система описания моментов во времени. Определяется как количество секунд, прошедших с полуночи 1 января 1970 года.
В PHP текущую метку времени возвращает функция time() и функция strtotime(), также с unix-метками работает класс DateTime.
Число дня недели
// Понедельник текущей недели:
$time = strtotime('this week monday, 00:00');
echo date('d.m.Y H:i', $time); // 09.09.2024 00:00
// Понедельник предыдущий недели:
$time = strtotime('previous week monday, 00:00');
echo date('d.m.Y H:i', $time); // 02.09.2024 00:00
// Понедельник следующей недели:
$time = strtotime('next monday, 00:00');
echo date('d.m.Y H:i', $time); // 16.09.2024 00:00
Числа месяца
Текущий месяц:
// Первый день текущего месяца:
$time = strtotime('first day of this month 00:00');
echo date('d.m.Y H:i:s', $time); // 01.09.2024 00:00:00
// Последний день текущего месяца:
$time = strtotime('last day of this month 23:59');
echo date('d.m.Y H:i:s', $time); // 30.09.2024 23:59:00
Преведущий месяц:
// Первый день предыдущего месяца:
$time = strtotime('first day of previous month 00:00');
echo date('d.m.Y H:i:s', $time); // 01.08.2024 00:00:00
// Последний день предыдущего месяца:
$time = strtotime('last day of previous month 23:59');
echo date('d.m.Y H:i:s', $time); // 31.08.2024 23:59:00
Следующий месяц:
// Первый день следующего месяца:
$time = strtotime('first day of next month 00:00');
echo date('d.m.Y H:i:s', $time); // 01.10.2024 00:00:00
// Последний день следующего месяца:
$time = strtotime('last day of next month 23:59');
echo date('d.m.Y H:i:s', $time); // 31.10.2024 23:59:00
Число дней в текущем месяце
Порядковый номер недели
Число дней в текущем году
Текущий квартал
Для сложения и вычитания времени можно применить функцию strtotime() или просто работать с секундами:
1 минута | 60 секунд | 10 минут | 600 секунд |
1 час | 3600 секунд | 10 часов | 36000 секунд |
1 день | 86400 секунд | 2 дня | 172800 секунд |
1 неделя | 604800 секунд | 2 недели | 1209600 секунд |
1 месяц | 2629743 секунд | 2 месяца | 5259486 секунд |
1 год | 31556926 секунд | 2 года | 63072000 секунд |
Прибавить к дате 10 секунд
$time = time() + 10;
echo date('d.m.Y H:i:s', $time); // 13.09.2024 08:18:42
/* или */
$time = strtotime('+10 seconds', time());
echo date('d.m.Y H:i:s', $time); // 13.09.2024 08:18:42
Прибавить к дате 10 минут
$time = time() + 600;
echo date('d.m.Y H:i:s', $time); // 13.09.2024 08:28:32
/* или */
$time = strtotime('+10 minutes', time());
echo date('d.m.Y H:i:s', $time); // 13.09.2024 08:28:32
Прибавить к дате 1 час
$time = time() + 3600;
echo date('d.m.Y H:i:s', $time); // 13.09.2024 09:18:32
/* или */
$time = strtotime('+1 hours', time());
echo date('d.m.Y H:i:s', $time); // 13.09.2024 09:18:32
Прибавить к дате 1 день
$time = time() + 86400;
echo date('d.m.Y H:i:s', $time); // 14.09.2024 08:18:32
/* или */
$time = strtotime('+1 days', time());
echo date('d.m.Y H:i:s', $time); // 14.09.2024 08:18:32
Прибавить к дате неделю
Прибавить к дате месяц
Прибавить к дате год
Сколько прошло c 8:00
$date = date('d.m.Y 08:00');
$diff = time() - strtotime($date);
echo round($diff / 3600, 1); // 0,3 часов
Сколько прошло c понедельника этой недели
$time = strtotime('monday');
$diff = time() - $time;
echo round($diff / 3600); // 104 часов
echo round($diff / 86400, 1); // 4,3 дней
*Дни недели: monday, tuesday, wednesday, thursday, friday, saturday, sunday.
Сколько прошло c начала года
$date = date('01.01.Y 00:00:00');
$diff = time() - strtotime($date);
echo intval($diff / 86400); // 256 дней
// или
echo date('z'); // 256
Сколько прошло c определённой даты
$date = '10.08.2016';
$diff = time() - strtotime($date);
echo round($diff / 3600); // 70952 часов
echo round($diff / 86400); // 2956 дней
Сколько остается до 23:00
$time = strtotime(date('d.m.Y 23:00'));
$diff = $time - time();
echo round($diff / 3600, 1); // 14,7 часов
Сколько остается до конца недели
$date = strtotime('next sunday, 23:59');
$diff = $date - time();
echo round($diff / 3600); // 64 часов
echo round($diff / 86400); // 3 дней
*Дни недели: monday, tuesday, wednesday, thursday, friday, saturday, sunday.
Сколько остается до конца месяца
$time = strtotime(date('Y-m-t 23:59'));
$diff = $time - time();
echo round($diff / 3600); // 424 часов
echo round($diff / 86400); // 18 дней
Сколько остается до конца года
$time = strtotime(date('Y-12-31 23:59'));
$diff = $time - time();
echo round($diff / 3600); // 2632 часов
echo round($diff / 86400); // 110 дней
Сколько остается до определенной даты
Количество часов между датами
$date_1 = '01.01.2021 10:00';
$date_2 = '10.03.2021 18:00';
$seconds = abs(strtotime($date_1) - strtotime($date_2));
echo round($seconds / 3600); // 1640
Количество дней между датами
$date_1 = '01.01.2021 10:00';
$date_2 = '10.03.2021 18:00';
$seconds = abs(strtotime($date_1) - strtotime($date_2));
echo round($seconds / 86400, 1); // 68,3
Количество месяцев между датами
$date_1 = strtotime('01.01.2021 10:00');
$date_2 = strtotime('10.03.2021 18:00');
$months = 0;
while (strtotime('+1 month', $date_1) < $date_2) {
$months++;
$date_1 = strtotime('+1 month', $date_1);
}
$days = round(($date_2 - $date_1) / (60 * 60 * 24));
echo $months . ' месяца, ' . $days . ' дней'; // 2 месяца, 9 дней