Я не могу заставить это работать. Я пробовал по образцам онлайн, но не было ни одного, именно то, что мне было нужно. По сути, я хочу отображать количество дней, прошедших с указанной даты. Мой пример ниже представляет собой комбинированный 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")
это дата сегодня. Можете ли вы сказать мне, что пошло не так?
Это будет работать:
<?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'); ?>
используя 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 :: дифф
Спасибо всем, я нашел более простое решение (проще для начинающих, как я, чтобы понять) 🙂
$now = time(); // or your date as well
$your_date = strtotime($NewDate);
$datediff = $now - $your_date;
$datediff
теперь показывает количество дней.
Слишком поздно отвечать, и есть другие хорошие ответы, но я хотел бы поделиться тем, что сработало для меня.
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>';
Попробуйте использовать метки времени.
$from = mktime(0,0,0,6,1,2015); // example old date
$to = time(); // now
echo round(($to - $from)/86400); // gives you elapsed days
86400 — количество секунд в дне.