首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP位于这些日期之间(不包括年份)。

问PHP位于这些日期之间(不包括年份)。
EN

Stack Overflow用户
提问于 2016-12-17 16:50:53
回答 2查看 127关注 0票数 0

我试着做一个简单的if echo语句。

代码语言:javascript
复制
<?php if (time("mm-dd") > strtotime("11-01") && time("mm-dd") < strtotime("02-28"))echo 'stuff' ?>

基本上,如果今天是11月、12月、1月、2月,我想要回音。如果我使用time()和全年,代码可以工作,但我只想比较一下月、日。我想我有一些愚蠢的语法错误,我就是搞不懂。这个代码片段被放置在我的html的<head>中,如果这有区别的话。小小的帮助。谢谢。

这就是我最后的下场。谢谢!

代码语言:javascript
复制
<?php if ($today > '12-16' || $today < '01-08') echo 'yes' ?>

用$today = date("m-d")

EN

回答 2

Stack Overflow用户

发布于 2016-12-17 17:14:00

  1. 使用date函数代替时间。
  2. 将&&切换到||。任何m-d日期字符串都不会大于11-01和小于02-28。
  3. 您可能希望使用11月1日的包容性比较运算符,以及针对3月1日的独占的比较运算符来计算闰年。
  4. 与其两次调用date(),不如将结果赋值给一个变量?

在这里,这一切都在一起:

代码语言:javascript
复制
$today = date('m-d');
if ($today >= '11-01' || $today < '03-01') { ... }
票数 0
EN

Stack Overflow用户

发布于 2016-12-17 17:19:22

考虑只使用date检查月份:

代码语言:javascript
复制
$month = (int) date("m");
$isMonthCorrect = $month === 11 || $month === 12 || $month === 1 || $month === 2;

注意(int)的重要性。整数比较比字符串比较更可靠,即使它们的行为类似。

或者,如果要在两个日期之间进行检查,为了优化性能,在将日期放入代码之前,应该将日期计算为时间戳。

例如,您可以使用一些网站来转换Unix时间戳。(这里不登广告,但您可以搜索“Unix时间戳转换器”)您也可以使用php -r获得快速输出:

代码语言:javascript
复制
php -r 'echo strtotime("2016-11-01 00:00:00");'
php -r 'echo strtotime("2017-02-01 00:00:00");'

然后你可以像这样使用它们:

代码语言:javascript
复制
$minimum = 1477958400; // from first command line
$maximum = 1485907200; // from second command line

$isInPeriod = $minimum <= time() && time() <= $maximum;

请记住:

  1. time()总是返回当前Unix时间戳,即自Unix以来的秒数。使用strtotime将字符串转换为时间,并使用date()将时间戳转换为给定格式的字符串。
  2. Unix时间戳总是绝对的。您不能将“月份”转换为Unix时间戳。您只能使用time()获得当前Unix时间戳,或者使用date()从时间戳中获取特定数据。

参考文献:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41200870

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档