【问题标题】:How to get next Date with specific time in PHP如何在PHP中获取具有特定时间的下一个日期
【发布时间】:2023-03-24 17:14:01
【问题描述】:

我想在 PHP 中获取具有特定日期和时间的日期,比如我想要第二天的日期和上午 9.30 的时间,即“2011-06-02 09:30:00”。 我使用 get 的代码来做到这一点,

<?php
   $next_day_date = date("Y")."-".date("m")."-".(date("d")+1)."  09:30:00";
   $new_trig_time_stamp = strtotime($next_day_date);
   $trigger_date_time = date("Y-m-d H:i:s",$new_trig_time_stamp);
   echo $trigger_date_time;
?>

上面的代码工作正常,但在 31 天失败,在 31 日它返回“1970-01-01 05:30:00”。 有没有其他方法可以做到这一点。

【问题讨论】:

    标签: php datetime


    【解决方案1】:

    当按固定数字移动日期时,最好使用mktime(),因为它可以很好地处理无效日期(例如,它知道 1 月 32 日实际上是 2 月 1 日)

    $trigger_date_time = date("Y-m-d H:i:s", mktime(9,30,0, date('n'), date('j')+1, date('Y'));
    

    【讨论】:

      【解决方案2】:

      strtotime() 在这里非常有用。

      $trigger_date_time = date( "Y-m-d H:i:s", strtotime( "tomorrow 9:30" ) );
      

      【讨论】:

      • 不过,不一定是明天。下一个 09:30 可能是几分钟后,在这种情况下,此解决方案将提供错误的答案。
      【解决方案3】:

      通过 unix 时间戳计算 - 更少的烦恼

      <?php
         $trigger_date_time = date("Y-m-d 09:30:00",time() + 60*60*24);
         echo $trigger_date_time;
      ?>
      

      【讨论】:

      • 是的,它甚至在 5 月 31 日尝试过。它有效......谢谢! strtotime() 在我的情况下造成了问题。
      • 当时钟因为 DST 而发生偏移时,这种手动调秒的解决方案会失败(一年一次,它会迟到 1 小时,而过早 1 小时)。
      • 如果解决方案的精度以天为单位,小时无关紧要
      【解决方案4】:
      echo date('Y-m-d', strtotime('+1 day')) . ' 09:30:30';
      

      【讨论】:

      • 如果我不得不猜测,我会说这是因为代码没有提供解释。
      • 为什么其他人投票失败? (我想每个人都同时得到)
      【解决方案5】:

      看看date_add

      更详细地说,类似...

      $myDate = new DateTime("Some time");
      $myDate->add(new DateInterval("P1D"));
      

      然后您可以使用$myDate-&gt;format(…) 来提取格式化的表示。

      【讨论】:

        猜你喜欢
        • 2018-10-06
        • 2012-06-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-04-24
        相关资源
        最近更新 更多