PHP日期函数为周误差

时间:2014-02-25 21:42:43

标签: php date

我正在尝试创建一个函数,它将采用发送日期,然后将所有日期提前一周。我看了一下跟随question,它做了类似于我想做的事情。因此,在这里使用问题中的代码就是我所拥有的:

$currentDay = "2014-02-25";
for ($i = 0 ; $i < 7 ; $i++) {
    echo date('Y-m-d', $currentDay) . '<br />';
    $currentDay -= 24 * 3600;
}

运行时,我得到以下输出:

1970-01-01
1969-12-31
1969-12-30
1969-12-29
1969-12-28
1969-12-27
1969-12-26

我怎样才能做到这一点:

2014-02-25
2014-02-24
2014-02-23
2014-02-22
2014-02-21
2014-02-20
2014-02-19
2014-02-18

日期功能的使用方式是否有问题?

2 个答案:

答案 0 :(得分:2)

你需要将日期变量包装在strtotime()中,date()函数的第二个参数接受一个Unix时间戳,这就是为什么你得到1969/1970等 - 当传递不正确的格式时date(),默认为the Unix epoch which is Jan 1 1970

$currentDay = strtotime("2014-02-25");

答案 1 :(得分:2)

试试这个简单的例子:

$day = new DateTime("2014-02-25");
for ($i = 0 ; $i <= 7 ; $i++) {
    echo $day->format('Y-m-d'), '<br />';
    $day->modify('-1 day');
}

demo