使用php计算日期范围内的天数?

Posted

技术标签:

【中文标题】使用php计算日期范围内的天数?【英文标题】:counting number of days in a date range using php? 【发布时间】:2018-12-15 16:45:44 【问题描述】:

我想用一个函数来输出一个日期范围内的天数

为了做到这一点,我使用了类似下面的东西;

$from = $_POST['from'];
$to  = $_POST['to'];

$numdays = date_diff($to,$from);

但是,当我输出$numdays 时,它总是“0”。我怎样才能做到这一点?

有什么线索吗?

【问题讨论】:

请发布示例值。我们不可能知道您从前端发送什么以及$from$to 具有哪些值。 【参考方案1】:

您必须将字符串转换为日期格式以进行计算,然后再转换回字符串以显示它

<?php
if(isset($_POST['from']) && isset($_POST['to']))
    $from = date_create($_POST['from']);
    $to  = date_create($_POST['to']);
    $numdays = date_diff($from,$to);
    echo $numdays->format("%r%a days");


?>

<form action="" method="post">
<lable for="from">from</lable>
<input type="date" name="from" id="from">
<lable for="to">to</lable>
<input type="date" name="to" id="to">
<input type="submit">

【讨论】:

这也有效,我遇到的问题是我没有创建日期对象....干杯!!【参考方案2】:

首先使用date_create为日期创建日期对象,然后计算差异为:

$numdays = date_diff(date_create($_POST['from']), date_create($_POST['to']))->format('%a');

阅读更多关于date_diff的信息。

【讨论】:

但是,如果我想在同一天计数怎么办。像 07/07/18 到 07/07/18 应该读作一天。这可能吗? ? 将其格式改为date('Y-m-d H:i:s', strtotime($_POST['from'])),然后在上面的代码中使用。 没用。我使用如下 $from = date('Ymd H:i:s',strtotime($_POST['from'])); 当涉及到结果部分如下 $ numdays = date_diff(date_create($to),date_create($from))->format('%a'); $to 怎么样?您是否也将其格式更改为Y-m-d H:i:s,如$from 是的,我做到了。所以我使用了如下的东西,$numdays = date_diff(date_create($to),date_create($from))-&gt;format('%a');+1 这可能不是最好的方法,但它可以扩展。

以上是关于使用php计算日期范围内的天数?的主要内容,如果未能解决你的问题,请参考以下文章

选择日期范围内的特定日期

如何用函数计算天数

如何写计算两个日期之间的天数函数

给定日期范围(开始日期和结束日期),我如何计算天数,不包括 .Net 中指定的星期几?

从日期范围计算特定月份的天数。谷歌表格

PHP日期操作类代码-农历-阳历转换闰年计算天数等