我的php不是很热。
我想知道你是否可以帮助我,我正在尝试创建一个包含过去31个日期的数组。 e.g。
$dates = array("2011-03-22", "2011-03-21", "2011-03-20", "2011-03-19", ........... "2011-02-22");
赞赏的任何指示:)
感谢
alsweet
答案 0 :(得分:3)
使用DateTime对象,它相当直接。 (从PHP 5.2开始提供)。
$dates = array();
$date = new DateTime();
for($i = 0; $i < 31; $i++) {
$dates[] = $date->format('Y-m-d');
$date->modify('-1 day');
}
答案 1 :(得分:2)
使用DateInterval
:
foreach(new DatePeriod(new DateTime("30 days ago"), new DateInterval('P1D'), 30) as $d)
$a[] = $d->format('Y-m-d');
$a = array_reverse($a); // assuming you want today to be index 0
答案 2 :(得分:1)
这是使用unix时间戳,mktime()
和date()
的老派方法。
<?php
// mktime() gives you a unix timestamp, with the
// current timestamp returned if you don't supply
// an argument.
$now = mktime();
$dates = array();
for ($i = 1; $i < 31; $i++) {
// date() allows you to format a unix timestamp.
// Take now (mktime()), and iteratively substract
// 60 seconds x 60 minutes x 24 hours (gives you
// one day in seconds), and multiply that by the
// days-in-seconds offset, or $i, and run that
// date() to produce the timestamp that date you
// will use to produce the plaintext formatted date.
$dates[$i-1] = date('Y-m-d',$now-($i*(60*60*24)));
}
?>
如果你:
echo '<pre>';
print_r($dates);
您将获得以下内容:
Array
(
[0] => 2011-03-20
[1] => 2011-03-19
[2] => 2011-03-18
[3] => 2011-03-17
[4] => 2011-03-16
[5] => 2011-03-15
[6] => 2011-03-14
[7] => 2011-03-13
[8] => 2011-03-12
[9] => 2011-03-11
[10] => 2011-03-10
[11] => 2011-03-09
[12] => 2011-03-08
[13] => 2011-03-07
[14] => 2011-03-06
[15] => 2011-03-05
[16] => 2011-03-04
[17] => 2011-03-03
[18] => 2011-03-02
[19] => 2011-03-01
[20] => 2011-02-28
[21] => 2011-02-27
[22] => 2011-02-26
[23] => 2011-02-25
[24] => 2011-02-24
[25] => 2011-02-23
[26] => 2011-02-22
[27] => 2011-02-21
[28] => 2011-02-20
[29] => 2011-02-19
)