关于今天生成过去七到十天的日期和日期,我需要帮助。如何创建一个准确的时间戳来处理周,月和年的变化?
答案 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)
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中找到。