今日の日を取得し、そこから14日分の配列を作りたいのですがどのような方法が良いでしょうか?
例えば、
$week = array(
array("20081201","12/01"),
array("20081202","12/02"),
(省略)
array("20081213","12/13"),
)
みたいな配列と、
$week2 = array(
array("year" => "2008","mon" => "12","day" => "01"),
array("year" => "2008","mon" => "12","day" => "02"),
(省略)
array("year" => "2008","mon" => "12","day" => "13"),
)
のような配列が欲しいです。
やってはみたのですが、月、年をまたいだ処理が分かりません。
お願いいたします。
strttotimeを使うとこう書けます。冗長に書いてます。
// 変数初期化(無くても動きます) $week = array(); $week2 = array(); $date = date("Ymd"); for($i=0; $i<14; $i++){ $timestamp = strtotime("$date + $i day"); // ここが肝 $ymd = date("Ymd",$timestamp); $md = date("m/d",$timestamp); $week[] = array($ymd,$md); $y = date("Y",$timestamp); $m = date("m",$timestamp); $d = date("d",$timestamp); $week2[] = array("year"=>$y,"mon"=>$m,"day"=>$d); } print("<pre>"); print_r($week); print_r($week2); print("</pre>");
5行目の
$date = date("Ymd"); |<< を次のようにすれば、年またぎ・月またぎの処理がされていることが確認できます。 >|| $date = date("Ymd",strtotime("20081226"));
こんなことでしょうか?
<?php $currentYear = date('Y'); $currentMonth = date('m'); $currentDay = date('d'); $result1 = array(); $result2 = array(); for ($i = 0; $i < 14; ++$i) { $stamp = mktime(0, 0, 0, $currentMonth, $currentDay + $i, $currentYear); $result1[] = array(date('Ymd', $stamp), date('m/d', $stamp)); $result2[] = array('year' => date('Y', $stamp), 'mon' => date('m', $stamp), 'day' => date('d', $stamp)); } print_r ($result1); print_r ($result2); ?>
mktimeでタイムスタンプを作成して、dateでフォーマット出力する。
色々な部分で利用できるので便利です。
直接は関係ないですが、mktimeで、m月0日と指定すると、(m-1)月の最終日を取得できたりと、色々使えます。
何かの参考になれば。
ありがとうございます。
参考にさせていただきます。
$week = array(); $now = time(); for($i = 0; $i < 14; $i++) { $time = $now + (86400 * $i); $week[$i]['year'] = date("Y",$time); $week[$i]['month'] = date("m",$time); $week[$i]['day'] = date("d",$time); $week[$i]['date'] = date("Ymd",$time); }
などでいかがでしょう?
ありがとうございます。
参考にさせていただきます。
strttotimeを使うとこう書けます。冗長に書いてます。
// 変数初期化(無くても動きます) $week = array(); $week2 = array(); $date = date("Ymd"); for($i=0; $i<14; $i++){ $timestamp = strtotime("$date + $i day"); // ここが肝 $ymd = date("Ymd",$timestamp); $md = date("m/d",$timestamp); $week[] = array($ymd,$md); $y = date("Y",$timestamp); $m = date("m",$timestamp); $d = date("d",$timestamp); $week2[] = array("year"=>$y,"mon"=>$m,"day"=>$d); } print("<pre>"); print_r($week); print_r($week2); print("</pre>");
5行目の
$date = date("Ymd"); |<< を次のようにすれば、年またぎ・月またぎの処理がされていることが確認できます。 >|| $date = date("Ymd",strtotime("20081226"));
ありがとうございます。
参考にさせていただきます。
<?php function get14days() { $result = array() ; for ($i = 0, $t = time(); $i < 14; ++$i, $t += 24*60*60) { $result[] = array(date('Ymd', $now), date('m/d', $t)) ; } return $result ; } function get14days2() { $result = array() ; for ($i = 0, $t = time(); $i < 14; ++$i, $t += 24*60*60) { $result[] = array_combine(array('year', 'mon', 'day'), explode('/', date('Y/m/d', $t))) ; } return $result ; } print_r(get14days()) ; print_r(get14days2()) ; ?>
ありがとうございます。
参考にさせていただきます。
ありがとうございます。
参考にさせていただきます。