【问题标题】:Check if date is in the next 3 days PHP检查日期是否在接下来的 3 天 PHP
【发布时间】:2015-03-08 15:55:20
【问题描述】:

我的数据库中存储了一个日期(due_date) 我想写一个脚本来检查due_date是否在接下来的3天

通过在线检查(谷歌)我找到了一些代码,但它似乎不起作用,见下文

if (time() - filemtime($due_date) >= 3 * 86400) 

{
  echo" Invoice $id is due in the next 3 days<br />";
}
else
{
echo" Invoice $id not due in the next 3 days </br>";
}

$due_date 包含格式为 01/01/2015 的日期

请问有人可以帮忙吗? P.s 我是新手!

谢谢

【问题讨论】:

  • $due_date 包含什么?它是您文件的路径吗?
  • 格式为 01/01/2015 的日期

标签: php date


【解决方案1】:

使用 strtotime() 将日期字符串转换为 unix 时间戳,并相应地编辑您的 if 语句:

$seconds_to_expire = strtotime($due_date) - time();
if ($seconds_to_expire < 3*86400) {
     ...

请注意,m/d/y 或 d/m/y 格式的日期通过查看各个组件之间的分隔符来消除歧义:如果分隔符是斜杠 (/),则美国 m/d/y假设;而如果分隔符是破折号 (-) 或点 (.),则假定为欧洲 d-m-y 格式(请参阅this)。您可能希望将日期转换为 Y-m-d 格式:

$due_date_ymd = date('Y-m-d', strtotime(str_replace('/', '-', $due_date));
$seconds_to_expire = strtotime($due_date_ymd) - time();
if ($seconds_to_expire < 3*86400) {
    ...

【讨论】:

  • 谢谢,但是当我运行此代码时,所有发票都显示“未到期”,但在我的数据库中,我的日期为 09/03/2015 和 09/03/2015(今天和明天?)
  • 哦,那只是翻转声明,看我上面的编辑版本
  • 完美!!谢谢! :)
  • @user4547025 检查手册中有关 strtotime 和斜线的内容并查看我的答案
  • @Aviram 我将如何修改 1 天?那么明天有什么要交的吗?
【解决方案2】:

改变

filemtime($due_date)

strtotime(str_replace('/', '-', $due_date))

你必须把/改成-,如果日子在前,否则php会假设第一个是月份!

【讨论】:

    【解决方案3】:

    if (strtotime($due_date)+60*60*24*3 =< time()+60*60*24*3) { echo "Is due in the next 3 days" } else { echo "Is not due in the next 3 days" }

    【讨论】:

      【解决方案4】:

      您可以将 DB 日期值(格式为“yyyy-mm-dd”)转换为 DateTime 对象,然后进行比较:

      $d = DateTime::createFromFormat('Y-m-d', $due_date);
      $d->modify('-3 days');  // subtract 3 days from due date
      if ($d < new DateTime()) {
          echo 'date is due within 3 days';
      }
      

      注意事项:

      1. new DateTime() 将为您提供当前日期。
      2. 我假设$due_date 是格式为“yyyy-mm-dd”的字符串,如果它是数据库中的日期列,您应该得到。

      由于您评论 $due_date 是“格式为 01/01/2015 的日期”,您可以轻松调整代码:将 createFromFormat 函数中的格式说明符从 'Y-m-d' 更改为 'd/m/Y'

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多