php - 如果语句使用日期和 strtotime 返回错误结果
问题描述
我正在尝试使用 if 语句来表示“如果今天介于两个日期之间,请执行此操作……”等。
它不起作用,我完全不知所措,因为据我所知 - 它应该起作用!
if (date('d/m/y', strtotime('now')) >= date('d/m/y', strtotime('1 January 2021')) && date('d/m/y', strtotime('now')) <= date('d/m/y', strtotime('31 January 2021'))):
echo 'true';
else:
echo 'false';
endif;
今天是 2020 年 12 月 3 日 - 为什么它告诉我这个说法是真的?
PS。如果我将其更改为任何一个,或两者兼而有之> 30th December 2020
,它确实有效< 1st February 2021
- 但我很谨慎这样做,以防它只是一个小故障并且我犯了一个明显的编码错误。
解决方案
首先。现在不是 12 月 3 日,而是 12 月 1 日。
您遇到的问题是因为您正在尝试比较字符串。
Date() 返回字符串,据我所知,没有任何编程语言可以正确地(在这种情况下正确地表示)将 > 或 < 与字符串进行比较。它是 === 或 !==。
所以在比较中使用 Unix 时间,因为它是数字的,而且计算机更容易理解。
$now = strtotime('now');
$start = strtotime('1 January 2021');
$end = strtotime('31 January 2021');
if ($now >= $start && $now <= $end):
echo 'true';
else:
echo 'false';
endif;
推荐阅读
- python - Azure python sdk,如何部署一个 vm,它是一个 Azure Spot 实例
- react-native - 如何在本机反应中将参数与主体变量连接起来
- solr - SOLR:如何在 solr 查询中添加今天日期的记录
- javascript - 解决方案:管理 highchart 中组列之间的空间
- redirect - 我如何使用 GoDaddy 域进行重定向
- sql - Active Record 查询 YII2 中两个 id 之间的更新而不使用行查询
- ruby-on-rails - 如何从远程 oracle 数据库 Ruby on rails 获取数据
- spring - 如何覆盖spring框架bean?
- c# - 在 .Net Core 3.1 中使用 NetFwTypeLib 时出现内存泄漏
- eclipse-rcp - 产品定义没有从所需功能中提取依赖项