php - 两个日期之间的天数在 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
解决方案
您可以使用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
推荐阅读
- sql - 将行转置为多列 SQL Server
- vue.js - Vuex 在组件中存储奇怪的行为
- python - 将独立块填充到全局数组中的“进程”或“线程”策略?
- asp.net-core - 复制到 PreBuild 事件的发布目录输出
- opencv - Xcode 10.0 OpenCV Cpp 项目不从 info.plist 读取 NSCameraDescription
- java - 接受用户输入以选择要编辑的变量
- google-sheets - Vlookup 找不到参考单元格
- sql-server - 将更改从 oracle 复制到 Sql Server
- gcc - 在静态库的 .text 部分执行运行时 md5sum 的最简单方法
- javascript - 有没有办法用子列表迭代无序列表 - 没有 jQuery?