首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在php中生成前七天的日期

在php中生成前七天的日期
EN

Stack Overflow用户
提问于 2010-02-26 05:59:17
回答 5查看 4.9K关注 0票数 2

我需要帮助生成的日期和天数的最后七到十天相对于今天。如何创建一个准确的时间戳来处理周、月和年的变化?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-02-26 06:04:55

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

代码语言:javascript
运行
复制
$timestamp = time();
for ($i = 0 ; $i < 7 ; $i++) {
    echo date('Y-m-d', $timestamp) . '<br />';
    $timestamp -= 24 * 3600;
}

这将为您提供以下输出:

代码语言:javascript
运行
复制
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秒。

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

代码语言:javascript
运行
复制
$timestamp = strtotime('2010-02-03');

您将获得以下输出:

代码语言:javascript
运行
复制
2010-02-03
2010-02-02
2010-02-01
2010-01-31
2010-01-30
2010-01-29
2010-01-28

天气转了个月的晴天。

对于闰年,如果我使用以下命令进行测试:

代码语言:javascript
运行
复制
$timestamp = strtotime('2008-03-03');

我得到了:

代码语言:javascript
运行
复制
2008-03-03
2008-03-02
2008-03-01
2008-02-29
2008-02-28
2008-02-27
2008-02-26

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

如果我用以下命令测试:

代码语言:javascript
运行
复制
$timestamp = strtotime('2009-03-03');

我得到了:

代码语言:javascript
运行
复制
2009-03-03
2009-03-02
2009-03-01
2009-02-28
2009-02-27
2009-02-26
2009-02-25

看起来也不错。

票数 4
EN

Stack Overflow用户

发布于 2010-02-26 06:56:12

如果您足够幸运能够使用PHP 5.3 (何乐而不为呢?)然后,DateTime/Interval/Period类也会变得非常有用。下面的示例打印前7天(以及今天)相对于今天的日期。

代码语言:javascript
运行
复制
$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'));
}

它输出类似以下内容:

代码语言:javascript
运行
复制
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可以相对容易地完成类似的操作,如下面的代码片段所示(它会产生与上面相同的输出):

代码语言:javascript
运行
复制
for ($i = 7; $i >= 0; $i--) {
    var_dump(date('D d-m-Y', strtotime("-$i days")));
}
票数 3
EN

Stack Overflow用户

发布于 2010-02-26 06:03:28

使用strtotime()

代码语言:javascript
运行
复制
for($i = 1; $i <= 10; $i++){
    echo strtotime("-$i days"), PHP_EOL;
}

另请参阅以下相关问题和答案:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2337968

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档