php中的mktime函数错误

时间:2015-01-07 08:15:47

标签: 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

我在这里做错了什么?

4 个答案:

答案 0 :(得分:2)

我没有看到问题。它对我来说是正确的。

你已经要求2月0日,即2月1日AKA 1月31日前一天。

答案 1 :(得分: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);
 ?>

答案 2 :(得分:0)

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

答案 3 :(得分:0)

在PHP函数的mktime方法中将month的第4个参数和第5个参数作为day = 0传递时,会造成很大的困惑。

摘自PHP官方文档:

  

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

     

任何给定月份的最后一天都可以表示为下个月的“ 0”天,而不是-1天。下面的两个示例都将生成字符串“ 2000年2月的最后一天是: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