php - 检查两个 DateTime 对象是否指同一天
问题描述
我试图查看两个 DateTimeImmutable 对象是否引用同一个日历日,但我不知道为什么下面的代码不起作用。代码是PHP。
function isSameDay( $x, $y ){
echo "<p>Comparing '" . $x->format('Y-m-d') . "' and '" . $y->format('Y-m-d'). "' returns";
if( $x->format('Y-m-d') == $y->format('Y-m-d)') ){
echo " true </p>";
return true;
}
echo " false </p>";
return false;
}
测试时,我得到以下输出,其中顶级测试用例应该返回 true:
Comparing '2021-09-06' and '2021-09-06' returns false
Comparing '2021-09-06' and '2021-10-29' returns false
Comparing '2021-09-06' and '2021-11-24' returns false
Comparing '2021-09-06' and '2021-11-26' returns false
我的理解是 DateTimeImmutable->format() 返回一个字符串,所以 if 语句只是一个字符串比较。事实上,比较为字符串的方法似乎是这样比较日期的主要方法之一。例如,我在上面使用的比较是作为这里几个问题的答案:
解决方案
叹息,没关系。有一个额外的括号$y->format('Y-m-d)')
推荐阅读
- php - 为什么 PHP7 只显示执行代码的错误?
- python - 在 TextInput 中禁用文本换行
- swift - 如何在 azure devops 构建代理中修复“*pod* 不支持配置文件”
- haskell - 为什么应用程序默认仅适用于Maybe
- java - 为什么 Android Studio Profiler 不显示 AsyncTask 线程上的活动
- spring - 如何将两种服务合二为一
- python - 如何抓取存储在列表中的多个链接
- java - 为什么 Geronimo Javamail 不获取消息主题并与默认 JVM 实现发生冲突?
- kubernetes - 尝试使用 helm 在 debian 上设置 kubernetes 时出错
- azure - 用于查询 Azure Active Directory 的 Azure 服务