4

今日を含む過去7日間の正確な日付をカスタム形式(dd / mm)で取得するにはどうすればよいですか?

結果の配列で、次のようなものを取得したいと思います(日付は単なる例です):

1=>11/2 (today minus 7 days)
2=>12/2 (today minus 6 days)
...
7=>17/2 (today)
4

3 に答える 3

18
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');
于 2012-06-30T10:07:04.223 に答える
9

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 />';
}

それらを正しい順序で配列に入れる方法を理解できるはずです:)

お役に立てば幸い

于 2012-06-30T10:12:36.810 に答える
5

time()は、現在のタイムスタンプを提供します。
86400秒は1日です(60 * 60 * 24)。
date()は、カスタムの日付文字列を提供します。

for ($iDay = 6; $iDay >= 0; $iDay--) {
    $aDays[7 - $iDay] = date('d/m', time() - $iDay * 86400);
}

この例も参照してください。

先行ゼロが必要ない場合は、カスタムの日付形式パラメーター'j/n'として使用します。

for ($iDay = 6; $iDay >= 0; $iDay--) {
    $aDays[7 - $iDay] = date('j/n', time() - $iDay * 86400);
}

この更新された例も参照してください。

===更新===

タイムスタンプを取得するためにstrtotime()を使用する@Dagonのアイデアは素晴らしいです。ここでより良い解決策:

for ($iDay = 6; $iDay >= 0; $iDay--) {
    $aDays[7 - $iDay] = date('j/n', strtotime("-" . $iDay . " day"));
}

そして

于 2012-06-30T09:42:31.930 に答える