PHP: Datetime::Diff 结果比较

2024-04-29

我试图比较两个日期之间的差异,但结果似乎非常错误,例如以下代码:

$datetime1 = new DateTime('2009-10-11');
$datetime2 = new DateTime('2009-10-13');
$interval = $datetime1->diff($datetime2);
echo $interval->format('%R%a days')."<br />";

$datetime1 = new DateTime('2009-10-11');
$datetime2 = new DateTime('2009-10-15');
$interval2 = $datetime1->diff($datetime2);
echo $interval2->format('%R%a days')."<br />";

if($interval == $interval2){ echo "true"; }else{echo "false"; }

返回true,但是上面你可以看到日期差异不一样,实际上echo打印+2和+4。知道如何比较 2 个日期差异吗?

编辑: datetime::diff 返回一个 dateinterval 对象,实际上它没有实现比较运算符,https://bugs.php.net/bug.php?id=49914 https://bugs.php.net/bug.php?id=49914我将使用 dateinterval vars 来检查差异,感谢您的回答


看来 DateInterval 内部没有实现比较功能。允许扩展为其预定义类定义自定义比较规则。显然,它又回到了松散的比较,即对象属于同一类。

此功能请求 https://bugs.php.net/bug.php?id=49914提供了一个补丁来添加此功能,但它似乎在任何时候都没有将其添加到源代码中。

为了解决这个问题,您可以自己比较对象的每个成员变量(年、月等),也可以将每个对象转换为数组:

if ((array) $interval == (array) $interval2) {
    echo 'true';
} else {
    echo 'false';
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP: Datetime::Diff 结果比较 的相关文章

  • 增加内存限制时出现奇怪的错误

    我使用的是共享托管环境 PHP 的默认内存限制是 32M 我在 Concrete5 设置方面遇到一些问题 当我尝试登录 Concrete5 的管理面板时 出现内存限制错误Allowed memory size of 33554432 byt
  • Android计算两个日期之间的天数

    我编写了以下代码来查找两个日期之间的天数 startDateValue new Date startDate endDateValue new Date endDate long diff endDateValue getTime star
  • 将字符串分解为标记,保持引用的子字符串完整

    我不知道我在哪里看到它 但是谁能告诉我如何使用 php 和 regex 来完成这个任务 this is a string that has quoted text inside 我希望能够像这样爆炸它 0 this 1 is 2 a 3 s
  • 为什么我的浮点数大于 1 时在 MYSQL 中存储为 .9999?

    我将进程时间作为 float 4 4 存储在 MySQL 数据库中 start time microtime TRUE things happen in my script end time microtime TRUE process t
  • 在 PHP 中设置 HTTP 响应代码(在 Apache 下)

    给出以下两种在 PHP 中设置 HTTP 响应代码的方法 具体来说 在 Apache 下 方法一 http response code 404 方法二 header HTTP 1 0 404 Not Found 我的问题是 除了这个事实之外
  • node-mongodb-native的插入性能

    我正在使用 MongoDB 测试 Node js 的性能 我知道其中每一个都很好 彼此独立 但我正在尝试一些测试来感受它们 我遇到了这个问题 但无法确定来源 问题 我正在尝试在单个 Node js 程序中插入 1 000 000 条记录 它
  • Composer 无法下载文件

    我正在尝试在命令行上使用作曲家 php composer phar update php composer phar install php composer phar self update php composer phar selfu
  • CakePHP - 选择性 SSL

    如何对网站的某些部分强制使用 HTTPS 例如登录页面或注册页面 并使用 HTTP 来完成网站的其余部分 我最喜欢的强制转换为 https 的方法是将其作为 php 脚本中的第一件事 它可以在 Joomla 中运行 也可以在 CakePHP
  • 没有得到 popen 的完整回复

    嗨 我正在使用 popen 运行一个进程 handle popen python scriptos py r while feof handle data fgets handle echo gt data 我只从返回 5 行的进程中获取
  • Laravel:使用 Faker 播种多个独特的列

    介绍 怎么样 伙计们 我有一个关于模型工厂和多个独特列的问题 背景 我有一个名为 Image 的模型 该模型将语言支持存储在单独的模型中 图片文字 图片文字 has an image id栏 语言栏和文本栏 图片文字有一个约束MySQL那个
  • php 邮件特殊字符 utf8

    我有以下脚本 在电子邮件中 主题 Testmail Special Characters Body Hi there this isn t somet
  • 如何使用 AJAX/jQuery 显示打印内容?

    所以我试图理解整个 AJAX jQuery 的事情 现在 当我单独运行这个 PHP 脚本时 我必须等待并观察轮子旋转 直到循环完成然后加载 while row mysql fetch array res postcode to storm
  • 将具有值的产品属性添加到 Woocommerce 中的产品

    我正在使用此代码添加自定义属性 attributes array array name gt Size options gt array S L XL XXL position gt 1 visible gt 1 variation gt
  • 如何检查 $row['column_name'] 是否返回空 php mysql

    我有一个带有列的表格 id name phone describe 当我从这个表中获取值时 我正在使用 row mysql fetch array query 现在我想检查是否 row describe 返回空值 如何查看php 您可以使用
  • 如何在php中根据url从mysql获取数据?

    我在 mysql 数据库中有一个页表 其中包含 page name title content author 字段 我想用 php 来获取它http www domain com index php page page name http
  • 是否可以使用流上下文在 PHP 下使用 FTPS?

    我了解到使用ftpsPHP for Windows 下的 ftp ssl connect 很困难 您被要求进入构建自己的二进制文件以包括 Open SSL 的漫长旅程 我找到了以下建议phpseclib http phpseclib sou
  • 计算特定产品类别的购物车商品数量

    我试图仅从 WooCommerce 中的特定产品类别获取购物车中的商品数量 我正在为一家酒厂做一个网站 它有酒精和非酒精产品 所有葡萄酒都属于 葡萄酒 主类别或类别 ID 34 其下有许多子类别和产品 对于属于此类别的任何商品 我需要知道此
  • 通过php将mp3转换为ogg

    我有一个网站 用户可以上传音乐并将其转换为 mp3 但我需要 mp3 和 ogg 文件支持才能以 html5 播放音乐 那么 有没有可以将mp3转换为ogg的php脚本呢 使用 ffmpeg 您可以直接从 php 脚本执行命令
  • 使用 PHP 将 SVG 图像转换为 PNG

    我正在开发一个网络项目 该项目涉及动态生成的美国地图 根据一组数据为不同的州着色 这个 SVG 文件为我提供了一张很好的美国空白地图 并且很容易更改每个州的颜色 困难在于 IE 浏览器不支持 SVG 因此为了让我使用 svg 提供的便捷语法
  • 一些基本的 PHP 问题 [已关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我只是有一些基本的 php 问题来加深我对学习的理解 但我找不到简单的答案 我有一个 php ajax 应用程序 它生成 mysql

随机推荐

  • 如何使用 Webpack 同时创建包的“web”和“node”版本?

    有没有一种方法可以使用 Webpack 或 Browserify 一次性创建捆绑包的 web 和 node 版本 捆绑包的 web 版本将在客户端上使用 同一捆绑包的 节点 版本将在服务器上用于预渲染 同构 http nerds airbn
  • 当计算结果在 Linux 中产生非正规数时刷新为零

    我的 C 代码中的计算正在产生逐渐下溢 当发生这种情况时 程序将以 SIGFPE 终止 当计算产生逐渐下溢 非正常 时 如何将结果刷新为零 而不终止执行 我正在一台 redhat linux 机器上工作 谢谢 您还没有指定架构 我猜测它是一
  • pandas:groupby 和可变权重

    我有一个数据集 其中每个观察值都有权重 我想使用以下方法准备加权摘要groupby但我对如何最好地做到这一点感到生疏 我认为这意味着自定义聚合函数 我的问题是如何正确处理不是按项目的数据 而是按组的数据 也许这意味着最好分步进行 而不是一次
  • iOS 11 文件提供程序扩展中的项目

    我有一个带有文件提供程序扩展名的应用程序 我尝试使用此方法为 ios 11 的新文件应用程序提供支持link https developer apple com documentation fileprovider content and
  • 如何将批处理变量设置为另一个脚本的输出

    我尝试将批处理变量设置为另一个命令的输出 在 Linux Unix 中 您可以简单地使用反引号 例如 在 csh 中 set MY VAR tail etc passwd windows 批处理中有类似的东西吗 实际上我已经发现了一些东西
  • 递归循环遍历对象以构建属性列表

    情况 我有一个包含多个子对象和子子对象的大对象 其属性包含多种数据类型 出于我们的目的 该对象看起来像这样 var object aProperty aSetting1 1 aSetting2 2 aSetting3 3 aSetting4
  • 使用存储的日期字段来计算计算当前过去天数的字段

    我正在使用 MySQL 和 phpMyAdmin 我的数据库中有一个 日期 字段 我需要在 MySQL db 中创建一个字段 该字段将计算并显示自每个记录 行的 日期 字段中的日期以来已经过去的天数 我没有能力使用 PHP 即时生成代码 有
  • 如何重新初始化jquery数据表

    如何重新初始化 jQuery 数据表 我什至尝试删除表格元素 该表仍在显示 我的代码是这样的 function removeExistingDataTableReference tableid if oTable null oTable f
  • Delphi:平滑折叠/展开形式

    需要你的帮助 我一直在寻找 我在德尔福西雅图 试图平滑调整表单底部的大小 就我而言 调整大小 只是有点折叠 展开 如下所示 我怎样才能意识到这一点 我尝试过使用 TTimer procedure TForm1 Timer1Timer Sen
  • 在 (BOOL)webView 中:如何打开在 UIWebView 中单击的 URL 以打开模态 UIWebView

    感谢您查看我的问题 让我先描述一下该应用程序 我有一个适用于 iOS5 1 的基于选项卡栏的应用程序 它使用情节提要和 ARC 有四个选项卡 每个选项卡都有一个视图控制器 显示带有本地 HTML 文件的 Web 视图 每个视图是要显示的一组
  • this.http.get 的超时时间不能超过 2 分钟吗? [复制]

    这个问题在这里已经有答案了 我的 Angular 4 3 2 代码正在调用我的后端服务 需要 2 4 分钟才能返回 仅使用默认值this http get代码中 我看到默认超时在 2 分钟后开始 然而 当我尝试设置超过 2 分钟的超时时 它
  • Scala 中的特征和抽象方法重写

    我有一个基本抽象类 特征 它有一个抽象方法foo 它由几个派生类扩展和实现 我想创建一个可以混合到派生类中的特征 以便它实现foo 然后调用派生类的foo 就像是 trait Foo def foo trait M extends Foo
  • 将 numpy memmap 刷新到 npy 文件

    有没有一种方法可以将 numpy memmap 数组保存到 npy文件 显然 有一种方法可以从 a 加载这样的数组 npy文件如下 data numpy load input npy mmap mode r 但刷新文件并不等同于将其存储在
  • Visual Studio Community 2015 安装失败

    最近安装了VS 2015 windows 10 但是出现了一些包失败的情况 稍后详述 当尝试启动新项目时 我收到一条错误消息 无法创建编译器 所以我卸载并修复了微软可再发行组件并再次尝试 从那以后我根本无法安装VS 我收到以下消息 Rosl
  • 如何用CGAL获取多边形网格的顶点和面?

    With CGAL 我能够得到一个多面体网格OFF格式 例如 下面的程序构建两个四面体 计算它们的交集 并将结果返回到OFF文件 这OFF输出提供顶点坐标和顶点索引给出的面 但我想将顶点和面作为 C 变量 例如double顶点向量和int面
  • 当我们点击编辑器外部时如何隐藏ckeditor?

    这是我的代码 div div
  • Firebase 3 - 附加身份验证范围数据

    在 Firebase 3 文档中 他们说您可以获取其他范围数据 例如 可选 指定您想要从身份验证提供程序请求的其他 OAuth 2 0 范围 要添加范围 请调用 addScope 例如 provider addScope https www
  • 如何读取 stripe webhook 响应 [重复]

    这个问题在这里已经有答案了 我创建了 Coldfusion 文件来捕获 STRIPE Webhook 响应
  • 如何在 android studio 中监听 shell 命令的响应?

    在 Android 终端模拟器中 我可以输入以下命令 gt su gt echo class power supply battery charge rate 根据手机的充电方式 输出将为 无 正常 或 涡轮 我希望能够检索此输出并存储它作
  • PHP: Datetime::Diff 结果比较

    我试图比较两个日期之间的差异 但结果似乎非常错误 例如以下代码 datetime1 new DateTime 2009 10 11 datetime2 new DateTime 2009 10 13 interval datetime1 g