我正在使用此功能:
date("Y-m-d", strtotime("-1 week"));
我在徘徊的是,如果我以这种方式使用此功能,它会在2月份跳跃吗?
我问的原因是因为我知道如果你这样做:
date("m/Y",strtotime("-1 months"));
就像在这个例子中一样: PHP date() and strtotime() return wrong months on 31st
它将在2月份跳跃。
答案 0 :(得分:2)
试试这个。 (PHP面向对象的格式。)
<?php
$d = new DateTime;
$interval = new DateInterval('P1W');
for ($i = 25; $i < 60; $i++)
{
$d->setDate(2014, 2, $i);
echo $d->format('Y-m-d'), " ";
$d->sub($interval);
echo $d->format('Y-m-d'), PHP_EOL;
}
当你说 1周时,你所说的天数没有任何含糊之处。当我说 1周时,我总是意味着7天。但术语 1个月是模糊的。我可能意味着28天,29天,30天或31天。 (在上面的代码中将“P1W”更改为“P1M”,然后再次运行。查看结果中的最后四行。
另请注意,php documentation for strtotime()表示“不建议使用此函数进行数学运算。最好在PHP 5.3及更高版本中使用DateTime :: add()和DateTime :: sub(),或者PHP 5.2中的DateTime :: modify()。“
另见this warning:示例#3在减去月数时要小心