【发布时间】:2018-11-19 11:48:17
【问题描述】:
我想计算两个日期之间的总天数。
注意:我不是在说两个日期之间的区别
我在 google 和 Stack Overflow 上找到了很多答案。我在这里分享
$now = time(); // or your date as well
$your_date = strtotime("2018-06-01");
$datediff = $now - $your_date;
echo round($datediff / (60 * 60 * 24));
输出为 9
$now = strtotime("2018-06-09");
$your_date = strtotime("2018-06-01");
$datediff = $now - $your_date;
echo $numberDays= round($datediff / (60 * 60 * 24));
输出为 8
$dStart = new DateTime('2018-06-01');
$dEnd = new DateTime('2018-06-09');
$dDiff = $dStart->diff($dEnd);
echo $dDiff->days;
输出为 8
$date1=date_create("2018-06-01");
$date2=date_create("2018-06-09");
$diff=date_diff($date1,$date2);
echo $diff->format("%a");
输出为 8
$startTimeStamp = strtotime("2018-06-01");
$endTimeStamp = strtotime("2018-06-09");
$timeDiff = abs($endTimeStamp - $startTimeStamp);
$numberDays = $timeDiff/86400; // 86400 seconds in one day
// and you might want to convert to integer
echo $numberDays = intval($numberDays);
输出为 8
对我来说正确答案是第一个 9,因为它显示了从 1 到 9 的总天数,没有区别。
我只想知道如何获取计数,因为我不想使用 time(),因为它正在使用当前日期。
例如:如果我选择第一个日期 2018-05-01 和我的第二个日期 2018-05-31。所以总天数是 31 天,而不是 30 天。
示例: 我正在做一个与工作日和薪水有关的项目。所以员工将选择日期。例如。我是员工,在 5 月的最后一个月,我选择了日期 2018-05-01 和 2018-05-31,所以我必须显示总工作日。所以根据我工作 31 天的日期并使用上面的代码在我得到 30 天的问题中。
希望你能理解我的问题。你能帮我解决这个问题吗?
【问题讨论】:
-
只需在计算输出中添加一个
-
@Andreas,在一月份,总天数是 31。所以你从 2018-01-01 到 2018-01-31 开始工作,所以如果我检查不同,它会显示 30 但是我在公司工作了 31 天。所以我需要输出 31。希望你明白这一点。
-
是的,如果你从计算中得到 30,你只需加 1 就得到 31。为什么要让它变得比需要的更难?
-
@Andreas,我正在做一个与工作日和薪水有关的项目。所以员工将选择日期。例如。我是员工,在 5 月的最后一个月,我选择了日期 2018-05-01 和 2018-05-31,所以我必须显示总工作日。
-
所以根据我工作 31 天的日期并在问题中使用上面的代码,我得到了 30 天。对此还有什么想法吗?