PHP Получите разницу дней между датой и сегодняшней датой (сейчас)

Я не могу заставить это работать. Я пробовал по образцам онлайн, но не было ни одного, именно то, что мне было нужно. По сути, я хочу отображать количество дней, прошедших с указанной даты. Мой пример ниже представляет собой комбинированный HTML и PHP, мне пришлось сделать это таким образом по некоторым причинам.

<?php
$OldDate = strtotime($row['DateSigned']);
$NewDate = date('M j, Y', $OldDate);
?>

<b>Date Signed:</b> <?php echo $NewDate; ?>
<b>Days Since Signed:</b> <?php echo date_diff(strtotime($NewDate),Date("y/m/d")); ?>

Это похоже на провал.Date("y/m/d") это дата сегодня. Можете ли вы сказать мне, что пошло не так?

0

Решение

Это будет работать:

<?php
$OldDate = strtotime("2015-10-21");
$NewDate = date('M j, Y', $OldDate);
$diff = date_diff(date_create($NewDate),date_create(date("M j, Y")));
?>

<b>Date Signed:</b> <?php echo $NewDate; ?>
<b>Days Since Signed:</b> <?php echo $diff->format('%R%a days'); ?>
2

Другие решения

используя date_diff, он ожидает объект DateTime, а не целое число. Вот пример, чтобы получить вас, где вы можете быть

<?php
$OldDate = new DateTime('2009-10-11');
$now = new DateTime(Date('Y-m-d'));
print_r($OldDate->diff($now));
?>

Это выводит (на день этого поста):

[y] => 6
[m] => 0
[d] => 14
[h] => 0
[i] => 0
[s] => 0
[weekday] => 0
[weekday_behavior] => 0
[first_last_day_of] => 0
[invert] => 0
[days] => 2205
[special_type] => 0
[special_amount] => 0
[have_weekday_relative] => 0
[have_special_relative] => 0

Увидеть DateTime :: дифф

0

Спасибо всем, я нашел более простое решение (проще для начинающих, как я, чтобы понять) 🙂

$now = time(); // or your date as well
$your_date = strtotime($NewDate);
$datediff = $now - $your_date;

$datediff теперь показывает количество дней.

0

Слишком поздно отвечать, и есть другие хорошие ответы, но я хотел бы поделиться тем, что сработало для меня.

date_default_timezone_set("Asia/Karachi");
$old_date = new DateTime('2018-12-01 04:10:58');
$now = new DateTime(Date('Y-m-d'));
$interval = $old_date->diff($now);

echo $interval->d.' days<br>';

// you can also get years, month, hours, minutes, and seconds
echo $interval->y.' years<br>';
echo $interval->m.' months<br>';
echo $interval->h.' hours<br>';
echo $interval->i.' minutes<br>';
echo $interval->s.' seconds<br>';
0

Попробуйте использовать метки времени.

$from = mktime(0,0,0,6,1,2015); // example old date
$to = time(); // now

echo round(($to - $from)/86400); // gives you elapsed days

86400 — количество секунд в дне.

-1
По вопросам рекламы [email protected]