Как вывести значение текущей и будущей даты в проценте? PHP
Имеется следующие данные: Будущая дата: 10.12.2020 Текущая дата: 10.11.2020 Хотел бы посредством PHP вычислить текущий процент от текущей даты до будущей даты Каждый день когда текущая дата всё ближе подходит к будущей даты то происходит уменьшения процента (на одно дневное значение), будущая дата 100 (%)
Ответы (2 шт):
Автор решения: Tunker
→ Ссылка
Чтобы посчитать % от даты, их надо 3: начальная, конечная и текущая
$date_begin = DateTime::createFromFormat('d.m.Y H:i:s', '16.10.2020 00:00:00')->getTimestamp();
$date_end = DateTime::createFromFormat('d.m.Y H:i:s', '16.12.2020 00:00:00')->getTimestamp();
$date_current = strtotime("now");
$percent=round(($date_current-$date_begin)/($date_end-$date_begin)*100,1);
Это вернет % текущей даты в промежутке от начальной - 0% до конечной 100% (округляя до 1 знака после запятой)
Автор решения: Bloom
→ Ссылка
<?php
// Первая дата
$d1 = '2020-11-10 00:01:00';
// Вторая дата
$d2 = '2020-12-10 23:59:59';
// timestamp первой даты
$d1_ts = strtotime($d1);
// timestamp второй даты
$d2_ts = strtotime($d2);
// Количество секунд
// Функция abs нужна, чтобы не проверять какая из двух дат больше
$seconds = abs($d1_ts - $d2_ts);
// Количество дней нужно округлить в меньшую сторону,
// чтобы узнать точное количество прошедших дней
// 86400 - количество секунд в 1 дней (60 * 60 * 24)
$days = floor($seconds / 86400);
echo "Всего дней:";
echo $days;//3
echo "<br>";
$today = date("Y-m-d H:i:s");
$d1_today = strtotime($today);
$seconds1 = abs($d1_today - $d2_ts);
$days1 = floor($seconds1 / 86400);
$pocent=($days1*100)/$days;
Echo "Осталось дней в процентах:";
print_r($pocent."%");
?>