如何以自定义格式(dd / mm)获取过去7天(包括今天)的确切日期?
在结果数组中,我希望得到类似的结果(日期仅为示例):
1=>11/2 (today minus 7 days)
2=>12/2 (today minus 6 days)
...
7=>17/2 (today)
答案 0 :(得分:10)
function getLastNDays($days, $format = 'd/m'){
$m = date("m"); $de= date("d"); $y= date("Y");
$dateArray = array();
for($i=0; $i<=$days-1; $i++){
$dateArray[] = '"' . date($format, mktime(0,0,0,$m,($de-$i),$y)) . '"';
}
return array_reverse($dateArray);
}
用法:
$arr = getLastNDays(7);
或
$arr = getLastNDays(7, 'd/m/Y');
答案 1 :(得分:6)
您可以组合2个函数date()和strtotime()。例如:
echo date("Y-m-d", strtotime("7 days ago"));
尝试:
for ($i=0; $i<7; $i++)
{
echo date("d/m", strtotime($i." days ago")).'<br />';
}
您应该能够找到如何以正确的顺序将它们放入数组中:)
希望有所帮助
答案 2 :(得分:3)
time()为您提供当前时间戳
86400
秒为一天(60 * 60 * 24)
date()为您提供自定义日期字符串。
for ($iDay = 6; $iDay >= 0; $iDay--) {
$aDays[7 - $iDay] = date('d/m', time() - $iDay * 86400);
}
另见this example。
如果您不想使用前导零,请使用'j/n'
作为custom date format parameter:
for ($iDay = 6; $iDay >= 0; $iDay--) {
$aDays[7 - $iDay] = date('j/n', time() - $iDay * 86400);
}
=== UPDATE ===
@ Dagon使用strtotime()来获取时间戳的想法很棒。这是更好的解决方案:
for ($iDay = 6; $iDay >= 0; $iDay--) {
$aDays[7 - $iDay] = date('j/n', strtotime("-" . $iDay . " day"));
}