尝试获得上个月的最后一天时,PHP日期行为很奇怪 [英] Weird PHP date behavior when trying to get last day of last month
问题描述
以下代码显示相同的结果
<?php
echo date('Ym-t');
//本月最后一天输出:2016-03-31
echo date('Y-m-t',strtotime( - 1个月));
//由于某些原因,输出相同:2016-03-31
echo date('Y-m-t',strtotime(+ 1 month));
//输出-31-31
可能只是我是愚蠢的,但是有人可以解释我为什么会这样吗?
使用 t
你的日期('Ym-t')
打电话给你:
t
- 给定月份的天数
如果您尝试 Ymd
你会发现这是两个不同的日期:
?php
var_dump(date('Ym-d'));
var_dump(date('Y-m-d',strtotime(' - 1 month')));
string(10)
-31
string(10)2016-03-02
要解决此问题,您可以使用上个月的最后一天的 strtotime
格式 code>
<?php
var_dump(date('Ym-d '));
var_dump(date('Y-m-d',strtotime('last last of last month')));
导致:
string(10)
2016-03-31
string(10)-29
I've just noticed that PHP date function acts weird, can someone explain me what i'm doing wrong?
Following code displays same results
<?php
echo date('Y-m-t');
// Outputs last day of this month: 2016-03-31
echo date('Y-m-t', strtotime("-1 month"));
// For some reason outputs the same: 2016-03-31
echo date('Y-m-t', strtotime("+1 month"));
// Outputs 2016-05-31
It might be just me being stupid, but could someone explain me why this happens?
When using t
in your date('Y-m-t')
call you're referring to:
t
- Number of days in the given month
If you tried Y-m-d
you'd figure out that it's 2 different dates:
<?php
var_dump( date('Y-m-d') );
var_dump( date('Y-m-d', strtotime('-1 month') ) );
string(10) "
2016-03-31
"
string(10) "2016-03-02
"
To fix this issue you can use the strtotime
format last day of last month
:
<?php
var_dump( date('Y-m-d') );
var_dump( date('Y-m-d', strtotime('last day of last month') ) );
which results in:
string(10) "
2016-03-31
"
string(10) "2016-02-29
"
这篇关于尝试获得上个月的最后一天时,PHP日期行为很奇怪的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!