【问题标题】:How to Subtract Minutes如何减去分钟
【发布时间】:2013-07-18 08:02:52
【问题描述】:

我想发送提醒电子邮件。我不想在 Linux/Unix/BSD 机器上使用 cron 或在 Windows 上使用计划任务。

我正在尝试从当前时间中减去 15 分钟。

到目前为止,这是我的代码(不起作用):

$days   = date("j",time());
$months = date("n",time());
$years  = date("Y",time());
$hours  = date("G",time());
$mins   = (date("i",time()));
$secs   = date("s",time());
$mins   = $mins-15;

【问题讨论】:

    标签: php


    【解决方案1】:

    要从当前时间减去 15 分钟,您可以使用strtotime()

    $newTime = strtotime('-15 minutes');
    echo date('Y-m-d H:i:s', $newTime);
    

    【讨论】:

    • 强烈建议这个解决方案,更加优雅和富有表现力。
    【解决方案2】:

    将日期更改为时间戳(以秒为单位),然后减去 15 分钟(以秒为单位),然后再转换回日期:

    $date = date("Y-m-d H:i:s");
    $time = strtotime($date);
    $time = $time - (15 * 60);
    $date = date("Y-m-d H:i:s", $time);
    

    【讨论】:

      【解决方案3】:

      你可以使用DateInterval

      $date = new DateTime();
      $interval = new DateInterval("PT15M");
      $interval->invert = 1;
      $date->add($interval);
      echo $date->format("c") . "\n";
      

      【讨论】:

      • 如果您将时区指定为 DateTime 对象的一部分,此解决方案也会更好。
      • DateInterval 建议 here: $interval = DateInterval::createFromDateString('-15 minutes'); 的可读性更高
      【解决方案4】:

      你也可以试试这个,

      $dateTimeMinutesAgo = new DateTime("15 minutes ago");
      $dateTimeMinutesAgo = $dateTimeMinutesAgo->format("Y-m-d H:i:s");
      

      【讨论】:

      • 非常简单。应该是公认的答案。
      【解决方案5】:

      在转换之前从 time() 中减去 15 分钟怎么样?

      $time = time() - (15 * 60);
      

      然后在您的代码中使用 $time 而不是 time()。

      【讨论】:

        【解决方案6】:
        $currentTime = date('Y-m-d H:i:s');
        $before15mins = strtotime('-15 minutes');
        echo date('Y-m-d H:i:s', $before15mins);
        

        【讨论】:

          【解决方案7】:

          您还可以使用strtotime 函数从当前时间中减去天数、小时数和/或秒数。

          echo date('Y-m-d H:i:s', strtotime('-15 minutes'));
          

          【讨论】:

            【解决方案8】:

            以下是您可以将天/小时/分钟/秒添加到当前时间的方式

              $addInterval = date('Y-m-d H:i:s', strtotime("+$days days $hours hours $minute minute $sec second", strtotime(currentTime)));
            

            【讨论】:

              【解决方案9】:

              尝试使用

              $min = time() - 900; //900 seconds = 15 minutes 
              

              【讨论】:

                【解决方案10】:

                你也可以使用 DateInterval 对象

                <?php
                    $date = new DateTime('Y-m-d H:i:s');
                    $date->sub(new DateInterval('PT10H30S'));
                    echo $date->format('Y-m-d H:i:s');?>
                

                【讨论】:

                • 也许对这些行的作用添加某种解释?对于不清楚的新手
                【解决方案11】:

                要减去 15 分钟,你可以这样做:

                date('Y-m-d H:i:s', (time() - 60 * 15));
                

                您可以将 15 替换为所需的分钟数。

                如果您想减少秒数,您可以这样做:

                date('Y-m-d H:i:s', (time() - 10));
                

                这样你会减去 10 秒。

                【讨论】:

                  【解决方案12】:

                  我知道这个问题已经过时了,但我只是想简单地分享一下我是如何做到的

                  $current = new DateTime("10 minutes ago", new DateTimeZone('Asia/Manila') );
                  
                  echo $current->format("Y-m-d H:i:s");
                  

                  【讨论】:

                    【解决方案13】:

                    如果你只有时间价值比下面会有用

                    // Your time
                    $time = '12:15:00';
                    
                    // Returned value '12:00:00'
                    $newTime = date('H:i:s', strtotime($time) - (15*60));
                    

                    【讨论】:

                      【解决方案14】:
                      //To Get Current DateTime
                      $currentDate = date("Y-m-d H:i:s");
                      
                      //To Get Current DateTime - 15Min
                      $oldDate = date("Y-m-d H:i:s", strtotime($currentDate) - (15 * 60));
                      
                      echo $currentDate;
                      echo $oldDate;
                      

                      【讨论】:

                      • 是否有充分的理由复制现有答案?为什么不为此使用DateTime,提供更具可读性的代码?
                      猜你喜欢
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 2017-08-03
                      • 2019-12-28
                      • 2022-11-01
                      相关资源
                      最近更新 更多