微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PHP Mktime 显示 3 月 2 日,我每个月都转储

如何解决PHP Mktime 显示 3 月 2 日,我每个月都转储

我一直在使用以下功能,直到有一天时钟向前移动:

function months($month_format="F") {
$array = array();
for ($i = 1; $i <=12; $i++) {
    $array[$i]['string'] = date($month_format,mktime(0,$i));
    $array[$i]['int'] = date('m',$i));
}
return $array;
}

输出一个数组:

  • 字符串[]
  • int[]

从前几天(比如 2 天前,当时钟在英国向前推进时),该功能似乎向我显示了 3 月 2 日和 2 月 0 日....

非常非常奇怪... 我正在使用 rethinkdb 和他们的 eachPosTime 函数......不确定这是不是导致它。

我尝试使用不同的函数,但仍然使用 mktime:

function months(){
 $start_month = 1;
 $end_month = 12;
 $start_year = date("Y");
 $array = array();
 for($m=$start_month; $m<=12; ++$m){

    echo $m.'<br>';

    $array[$m]['string'] = date('F',$m));
    $array[$m]['int'] = date('m',$m));

       if($start_month == 12 && $m==12 && $end_month < 12) 
       {
           $m = 0;
           $start_year = $start_year+1;
       }
 //echo date('F Y',$m,1,$start_year)).'<br>';
 if($m == $end_month) break;
}
return $array;
}

不过,我还是不走运。 检查这里的图像,它显示了months()函数输出

Output of the months() function

解决方法

这与时钟变化无关,而是与月份的时间以及完全无用的 the mktime function 签名有关。

当您从“mktime”调用中省略参数时,它们会被填充为今天的日期。在您的情况下,您指定的月份没有日或年,因此当您要求 mktime(0,2); 时,它将填写今天的日期和年份,并查找 2021 年 2 月 29 日 - 一个不存在的日子。由于时间库“溢出”日期,这变成了 3 月 1 日。

解决方案是将明确的日期传递给“mktime”,如在 mktime(0,$m,1) 中,或者使用一个不太容易混淆的函数。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?