Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

PHP Разница времени сколько осталось Timestamp?

n0bleman Ученик (3), открыт 1 неделю назад
Не пойму как посчитать разницу между датами вроде все просто time() - новая дата но что то не работает

$addtime = 31536000; // Добавляем 1 год времени в секундах

$newdate = time() + $addtime ; // Добавляем время к текущей дате timestamp


$remain = time() - $newdate; //Вычитаем новую дату из текущего времение timestamp

echo "Осталось дней и часов " . date('Y.m.d H:i:s', $remain);

Выводит

Осталось дней и часов 1969.01.01 00:00:00

А мне надо чтобы писало осталось 1 год и 4 часа и столько то секунд и времени до истечения
Где то я невнимателен ?
Дополнен 1 неделю назад
Можете еще надо mktime использовать только в математике 0
4 ответа
партнер [www.a77r.ru] Мыслитель (9204) 1 неделю назад
потому что пытаешься разницу во времени выводить как дату.
Игорь Горохов Просветленный (22596) 1 неделю назад
Не знаток ПХП, поэтому навскидку.

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

<?php
$addtime = 31536; //В секундах, 8 часов, 45 минут, 35 секунд
$format = sprintf('PT%dS', $addtime);

$newdate = new DateTime('now');
$newdate->add(new DateInterval($format));
$remain = new DateTime('now');

echo "Осталось дней и часов " . $remain->diff($newdate)->format('%y.%m.%d %H:%i:%s');
?>
Андрей Высший разум (469903) 1 неделю назад
Надо использовать не date() / time(), а набор встроенных классов для работы с датой / временем.

$cur_time = new DateTimeImmutable(); // текущая временная метка
$new_time = new DateTimeImmutable('+1 years +2 months +3 days +4 hours +5 minutes +6 seconds');
echo $new_time->diff($cur_time)->format('%Y.%M.%D %H:%I:%S');
 $cur_time = new DateTimeImmutable(); // текущая временная метка
$new_time = new DateTimeImmutable('+1 years +2 months +3 days +4 hours +5 minutes +6 seconds');
echo $new_time->diff($cur_time)->format('%Y.%M.%D %H:%I:%S');


https://www.php.net/manual/ru/refs.calendar.php
Alex Искусственный Интеллект (119360) 5 дней назад
// Текущая дата
$current_date = new DateTime();

// Дата через 1 год
$future_date = new DateTime('+1 year');

// Вычисляем разницу между датами
$interval = $current_date->diff($future_date);

// Формируем строку с оставшимся временем
$remaining_time = sprintf(
'Осталось %d лет, %d месяцев, %d дней, %d часов, %d минут и %d секунд',
$interval->y,
$interval->m,
$interval->d,
$interval->h,
$interval->i,
$interval->s
);

echo $remaining_time;
Похожие вопросы