【问题标题】:mktime function in case of Last day of a month in phpphp中一个月的最后一天的mktime函数
【发布时间】:2015-01-07 08:15:46
【问题描述】:

PHP函数mktime中一个月最后一天的理解

echo date("Y-m-d H:i:s", mktime(0, 0, 0, 2, 0, 2014));

输出是

2014-01-31 00:00:00

应该是

2014-02-28 00:00:00

我在这里做错了什么?

【问题讨论】:

  • 天应该是Values 1 to 28, 29, 30 or 31
  • 2 月 31 日?严重地? :-)
  • @chumkiu 输入错误,实际上我希望月份应该是 2 而不是 1,即 2 月而不是 2 月

标签: php mktime


【解决方案1】:

我没有看到问题。在我看来是正确的。

您要求的是 2 月 0 日,即 2 月 1 日(又名 1 月 31 日)的前一天。

【讨论】:

    【解决方案2】:

    如果您将日期设置为 0,它将返回该月的最后一天 - 1

    <?php
         $lastday = mktime(0, 0, 0, 3, 0, 2000);
         echo strftime("Last day in Feb 2000 is: %d", $lastday);
         $lastday = mktime(0, 0, 0, 4, -31, 2000);
         echo strftime("Last day in Feb 2000 is: %d", $lastday);
     ?>
    

    【讨论】:

      【解决方案3】:
      echo date("Y-m-d H:i:s", mktime(0, 0, 0, 2, 28, 2014)); //You can't show 29 in feb 2014
      

      输出:2014-02-28 00:00:00

      【讨论】:

        【解决方案4】:

        在 PHP 函数的 mktime 方法中将 month 第 4 个参数和第 5 个参数作为 day = 0 传递时的主要混淆。

        来自 PHP 官方文档:

        示例 #3 一个月的最后一天**

        任何给定月份的最后一天都可以表示为下个月的“0”天,而不是 -1 天。以下两个示例都将生成字符串“The last day in Feb 2000 is: 29”。

        $lastday = mktime(0, 0, 0, 3, 0, 2000);
        echo strftime("Last day in Feb 2000 is: %d", $lastday);
        $lastday = mktime(0, 0, 0, 4, -31, 2000);
        echo strftime("\nLast day in Feb 2000 is: %d", $lastday);
        // For Feb 2014
        $lastday = mktime(0, 0, 0, 3, 0, 2014);
        echo strftime("\nLast day in Feb 2014 is: %d", $lastday);
        
        $lastday = mktime(0, 0, 0, 4, -31, 2014);
        echo strftime("\nLast day in Feb 2014 is: %d", $lastday);
        ?>
        

        输出如下:

        Last day in Feb 2000 is: 29
        Last day in Feb 2000 is: 29
        Last day in Feb 2014 is: 28
        Last day in Feb 2014 is: 28
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-12-24
          • 2021-12-29
          • 1970-01-01
          • 1970-01-01
          • 2010-09-18
          • 2012-03-12
          • 1970-01-01
          相关资源
          最近更新 更多