我正在尝试创建一个函数,它将采用发送日期,然后将所有日期提前一周。我看了一下跟随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
日期功能的使用方式是否有问题?
答案 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');
}