PHP获取日期和今天(现在)日期之间的天数差

PHP获取日期和今天(现在)日期之间的天数差,php,date-difference,Php,Date Difference,我好像没法让它工作。我试过从网上的样品,但没有一个正是我所需要的。基本上,我希望能够显示从给定日期起经过的天数。我下面的示例是HTML和PHP的组合,出于某些原因,我不得不这样做 <?php $OldDate = strtotime($row['DateSigned']); $NewDate = date('M j, Y', $OldDate); ?> <b>Date Signed:</b> <?php echo $NewDate; ?> <

我好像没法让它工作。我试过从网上的样品,但没有一个正是我所需要的。基本上,我希望能够显示从给定日期起经过的天数。我下面的示例是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")); ?>

签署日期:
自签署之日起的天数:
这似乎失败了。
日期(“y/m/d”)
是今天的日期。你能告诉我出了什么问题吗?

试着使用时间戳

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

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

86400是一天中的秒数。

使用date_diff,它需要DateTime对象而不是整数。下面是一个例子,让您了解您可能想去的地方

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

这将起作用:

<?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'); ?>

签署日期:
自签署之日起的天数:

谢谢大家,我找到了一个更简单的解决方案(对于像我这样的初学者来说更容易理解):)


$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>';
date\u default\u timezone\u set(“亚洲/卡拉奇”);
$old_date=新日期时间('2018-12-01 04:10:58');
$now=新日期时间(日期('Y-m-d'));
$interval=$old_date->diff($now);
echo$interval->d.“天
”; //您还可以获得年、月、小时、分钟和秒 回声$interval->y.“年
”; echo$interval->m.“月数
”; echo$interval->h.“小时数
”; echo$interval->i.“分钟
”; 回声$interval->s.“秒
”;
下面是一些代码,可以让您知道日期与当前日期的差异,希望对您有所帮助

    $date = $row['DateSigned'];
    $diff = date_diff(date_create($date), date_create(date('Y-m-d')));
    echo $diff->format("%a");

您将得到的结果是天数。

这对我来说是失败的,结果我一直得到16784天。你能用我上面的变量和代码给我一个示例解决方案吗?我不能使用
mktime
,因为from日期是从mysql日期字段获取的日期。您正在将日期转换为时间戳,然后以不同的格式转换为日期,然后再次尝试将than转换为时间戳。难怪它对你不起作用,你似乎不知道自己在做什么…@可能是工作-这就是他来这里的原因。如果他知道自己在做什么,他就不会问这个问题了。这个评论可能不是真的需要,对吧?你的回答根本不能解决关于日期差异的OPs问题。在整个页面上声明“去你的”和连续向下投票不是处理这些情况的最佳方式。也许你应该离开电脑休息几分钟。干杯。公平地说,我再次尝试了您的解决方案,并找到了更好地理解它的方法。您希望输出的格式是什么。比如说+5天?不是想增加天数,只是想得到天数的差异。例如7/10和7/20将是10天。我如何让它只显示天的结果?我认为这是有效的,也是最简单的解决方案,但它可以打印出所有内容,我只需要几天时间。:)它打印一个数组,只需要得到你需要的值谢谢Akhil,这也行,但我也在尝试得到Jesse的解决方案,因为它似乎是在较小的代码行或更简单的代码行中。不过你们都说对了:)$datediff并没有以天为单位显示差异,而是以秒为单位。我将答案除以86400(一天中的秒数24*60*60),然后使用ceil得到天数的差值。ceil($datediff/86400)
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>';
    $date = $row['DateSigned'];
    $diff = date_diff(date_create($date), date_create(date('Y-m-d')));
    echo $diff->format("%a");