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

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

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

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

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

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

有什么线索吗?

【问题讨论】:

  • 请发布示例值。我们不可能知道您从前端发送什么以及$from$to 具有哪些值。

标签: php jquery html wordpress function


【解决方案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 这可能不是最好的方法,但它可以扩展。
猜你喜欢
  • 2011-02-05
  • 1970-01-01
  • 2019-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多