使用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))->format('%a');+1
这可能不是最好的方法,但它可以扩展。以上是关于使用php计算日期范围内的天数?的主要内容,如果未能解决你的问题,请参考以下文章