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
我在这里做错了什么?
答案 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