首页 > 解决方案 > 两个日期之间的天数在 PHP 中不起作用

问题描述

我需要计算两个日期之间的天数(格式 YYYYMMDD)

我使用了两个测试日期,2020-01-20 和 2020-02-20

$enddate = "20200220";
$startdate = "20200120";
$s = new DateTime($enddate);
$e = new DateTime($startdate);
$diff = $s->diff($e);
echo "days: ".$diff->d;

结果是 0 而不是一个月的天数

天数:0

我知道日期作为字符串可能不明确,所以我还尝试通过以下方式指定格式:

$enddate = "20200220";
$startdate = "20200120";
$s = DateTime::createFromFormat('Ymd', $startdate);
$e = DateTime::createFromFormat('Ymd', $enddate);
$diff = $s->diff($e);
echo "days: ".$diff->d; 

还是0

天数:0

标签: phpdatetime

解决方案


您可以使用strtotime

<?php

// strtotime converts any string date format to unix time

$date1 = "2020-01-20";
$date2 = "2020-02-20";

$seconds_in_a_day = 86400;


$diff = (strtotime($date2) - strtotime($date1))/$seconds_in_a_day;

echo $diff; // output 31

推荐阅读