我有这个:
$today=date('Y-m-d');
// echo "2013-11-12";
我想得到像这样的上个月范围:
$startLastMonth = "2013-10-01";
$endLastMonth = "2013-10-31";
我尝试了但是它不符合我的愿望,因为我需要把42:
$startLastMonth = mktime(0, 0, 0, date("Y"), date("m"), date("d")-42);
还有其他办法吗?
由于
答案 0 :(得分:4)
以下代码应该有效
$startLastMonth = mktime(0, 0, 0, date("m") - 1, 1, date("Y"));
$endLastMonth = mktime(0, 0, 0, date("m"), 0, date("Y"));
你正在做的是告诉PHP a)你想要上个月的第一天(date("m") - 1
),和b)告诉PHP你想要当前的第0天月,根据mktime文档,它成为上个月的最后一天。可以在此处找到文档:http://php.net/manual/en/function.mktime.php
如果你想像你可以那样格式化输出
$startOutput = date("Y-m-d", $startLastMonth);
$endOutput = date("Y-m-d", $endLastMonth);
答案 1 :(得分:3)
只需使用PHP提供的相对日期/时间格式:
var_dump( new DateTime( 'first day of last month' ) );
var_dump( new DateTime( 'last day of last month' ) );
请参阅:http://www.php.net/manual/en/datetime.formats.relative.php
答案 2 :(得分:0)
这是一个方便的小功能,可以做你想要的。您将返回一个包含上个月的第一天和最后一天的数组到提供的日期: -
function getLastMonth(DateTime $date)
{
//avoid side affects
$date = clone $date;
$date->modify('first day of last month');
return array(
$date->format('Y-m-d'),
$date->format('Y-m-t'),
);
}
var_dump(getLastMonth(new \DateTime()));
输出: -
array (size=2)
0 => string '2013-10-01' (length=10)
1 => string '2013-10-31' (length=10)
在PHP> 5.3你可以这样做: -
list($start, $end) = getLastMonth(new \DateTime());
var_dump($start, $end);
输出: -
string '2013-10-01' (length=10)
string '2013-10-31' (length=10)