今日を含む過去7日間の正確な日付をカスタム形式(dd / mm)で取得するにはどうすればよいですか?
結果の配列で、次のようなものを取得したいと思います(日付は単なる例です):
1=>11/2 (today minus 7 days)
2=>12/2 (today minus 6 days)
...
7=>17/2 (today)
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');
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 />';
}
それらを正しい順序で配列に入れる方法を理解できるはずです:)
お役に立てば幸い
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"));
}
そして例。