在php中生成前七天的日期

时间:2010-02-25 21:59:17

标签: php date timestamp

关于今天生成过去七到十天的日期和日期,我需要帮助。如何创建一个准确的时间戳来处理周,月和年的变化?

5 个答案:

答案 0 :(得分:3)

最简单的方法是使用time()函数获取与今天相对应的时间戳; 7次删除该时间戳的1天,每次都回显与该时间戳对应的日期:

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

这将为您提供此输出:

2010-02-25
2010-02-24
2010-02-23
2010-02-22
2010-02-21
2010-02-20
2010-02-19

由于时间戳仅表示自1970-01-01以来的秒数,因此将某一天减去时间戳意味着减去24*3600秒。


在评论后进行修改:

对于月份和周数的更改,这仍然有效:一天仍然是24 * 3600秒。

例如,如果您使用此行而不是我在第一个示例中发布的第一行进行测试:

$timestamp = strtotime('2010-02-03');

你会得到这个输出:

2010-02-03
2010-02-02
2010-02-01
2010-01-31
2010-01-30
2010-01-29
2010-01-28

月改了。


对于闰年,如果我测试使用它:

$timestamp = strtotime('2008-03-03');

我明白了:

2008-03-03
2008-03-02
2008-03-01
2008-02-29
2008-02-28
2008-02-27
2008-02-26

看起来很好,因为2008年2月有29天。

如果我测试:

$timestamp = strtotime('2009-03-03');

我明白了:

2009-03-03
2009-03-02
2009-03-01
2009-02-28
2009-02-27
2009-02-26
2009-02-25

看起来也很好。

答案 1 :(得分:2)

如果你足够幸运能够使用PHP 5.3(为什么不能?),那么DateTime / Interval / Period类也会非常有用。以下示例打印相对于今天的前7天(以及今天)的日期。

$start  = new DateTime('-7 days', new DateTimeZone('UTC'));
$period = new DatePeriod($start, new DateInterval('P1D'), 7);

foreach ($period as $date) {
    var_dump($date->format('D d-m-Y'));
}

输出的内容如下:

string(14) "Thu 18-02-2010"
string(14) "Fri 19-02-2010"
string(14) "Sat 20-02-2010"
string(14) "Sun 21-02-2010"
string(14) "Mon 22-02-2010"
string(14) "Tue 23-02-2010"
string(14) "Wed 24-02-2010"
string(14) "Thu 25-02-2010"

使用strtotime可以相对轻松地完成类似操作,如下面的代码段所示(产生与上面相同的输出):

for ($i = 7; $i >= 0; $i--) {
    var_dump(date('D d-m-Y', strtotime("-$i days")));
}

答案 2 :(得分:1)

使用strtotime()

for($i = 1; $i <= 10; $i++){
    echo strtotime("-$i days"), PHP_EOL;
}

另见相关问题及答案:

答案 3 :(得分:0)

要在过去10天(包括今天)生成12am的时间戳,请执行以下代码:

<?php
for ($i=0; $i<=10; $i++) {
  echo mktime (0, 0, 0, date('m'), date('d')-$i, date('Y'));
}
?>

答案 4 :(得分:0)

您需要的所有内容都可以在this page of the php manual中找到。