【问题标题】:Weird php date strtotime issue奇怪的php日期strtotime问题
【发布时间】:2021-04-29 18:32:01
【问题描述】:

我在 PHP 中使用“date”函数和“strtotime”时发现了一个奇怪的问题。

echo date('m/d/Y h:i:s a', time())."<br>";       //returns 04/29/2021 12:26:30 pm
echo date('M Y', strtotime('-5 months'))."<br>"; //returns Nov 2020
echo date('M Y', strtotime('-4 months'))."<br>"; //returns Dec 2020
echo date('M Y', strtotime('-3 months'))."<br>"; //returns Jan 2021
echo date('M Y', strtotime('-2 months'))."<br>"; //returns Mar 2021
echo date('M Y', strtotime('-1 months'))."<br>"; //returns Mar 2021
echo date('M Y')."<br>";                         //returns Apr 2021

我的服务器时间是正确的,如第一行所示,但为什么 strtotime('-2 months') 和 strtotime('-1 months') 两次返回相同的值(2021 年 3 月)?

提前致谢

【问题讨论】:

标签: php date strtotime


【解决方案1】:

您将在 4 月 29 日测试此功能 echo date('M Y', strtotime('-2 months'))。它将返回 2021 年 2 月 29 日 - 一个不存在的日期,因此它默认为 2 月 (28) 的最后一天并加 1 以获得 3 月 1 日。

...我在这里有一个解决方案,但与您下面的解决方案相比,它有点像黑客,所以我删除了它以支持您的解决方案

【讨论】:

  • 啊!我懂了。这很有意义。解决这个问题的最佳方法是什么?我需要能够拖欠 6 个月的月份名称。
  • @BryceMatheson - 我在编辑的答案中给出了一种方法。
  • 这个怎么样?这可以作为替代品吗? code echo date("MY", strtotime("-5 月", strtotime(date("F") . "1"))) 。 "
    "; echo date("MY", strtotime("-4 month", strtotime(date("F") . "1"))) 。 "
    "; echo date("MY", strtotime("-3 月", strtotime(date("F") . "1"))) 。 "
    "; echo date("MY", strtotime("-2 月", strtotime(date("F") . "1"))) 。 "
    "; echo date("MY", strtotime("-1 month", strtotime(date("F") . "1"))) 。 "
    ";回声日期(“MY”,时间())。 "
    "; code
【解决方案2】:

这为我解决了:

    echo date("M Y", strtotime("-5 month", strtotime(date("F") . "1"))) . "<br>";
    echo date("M Y", strtotime("-4 month", strtotime(date("F") . "1"))) . "<br>";
    echo date("M Y", strtotime("-3 month", strtotime(date("F") . "1"))) . "<br>";
    echo date("M Y", strtotime("-2 month", strtotime(date("F") . "1"))) . "<br>";
    echo date("M Y", strtotime("-1 month", strtotime(date("F") . "1"))) . "<br>";
    echo date("M Y", time()) . "<br>";

感谢您的帮助!

【讨论】:

    【解决方案3】:

    其实很简单

    echo date('m/d/Y h:i:s a', time())."<br>";     //returns 04/29/2021 12:26:30 pm
    echo date('M Y', strtotime('first day of -5 months'))."<br>"; //returns Nov 2020
    echo date('M Y', strtotime('first day of -4 months'))."<br>"; //returns Dec 2020
    echo date('M Y', strtotime('first day of -3 months'))."<br>"; //returns Jan 2021
    echo date('M Y', strtotime('first day of -2 months'))."<br>"; //returns Feb 2021
    echo date('M Y', strtotime('first day of -1 months'))."<br>"; //returns Mar 2021
    echo date('M Y')."<br>";  
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-29
      • 1970-01-01
      • 2012-04-12
      相关资源
      最近更新 更多