- ベストアンサー
2011-08-18>2011年 8月18日(木)
LAMPでくんでるのですが MySQLから 「last_modified」フィールドから「2011-08-18」という文字列を取得したとき、 これを、「2011年 8月18日(木)」という文字列に変えるにはどうすればいいのでしょうか? なお、8月の左は半角スペース1つあいてます。 よろしくお願い申し上げます。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
PHP 5.3 以上の場合は、下記のソースが有効です。 PHP 5.2でも使用できますが、若干仕様が違うため、PHP 5.3以上の使用を お勧めします。 PHP5.3 以上の日付時間の処理は、DateTimeとDateIntervalが基本となります。 <?php $week_array = array("日","月","火","水","木","金","土"); $setTime = "2011-09-07"; $date = new DateTime($setTime); #echo $date->format("Y年n月j日") . "(" . $week_array [$date->format("w")]. ")"; $y = $date->format("Y") . "年"; $m = $date->format("n") . "月"; $d = $date->format("j") . "日"; $w = $date->format("w"); echo $y . " " . $m . $d . "(" . $week_array["$w"]. ")"; ?>
その他の回答 (2)
- 1minn
- ベストアンサー率57% (52/90)
一回も動かしてないからバグがあったらごめんなさい。 他の方の作り方が自分とは違ってたので面白いなと思い、回答してみました。 $beforeDate = '2011-08-18'; // ハイフンで分割 $ary = explode( '-', $beforeDate ); // タイムスタンプに $timeStamp = mktime( 0, 0, 0, (Int)$ary[1], (Int)$ary[2], (Int)$ary[0] ); // 年 $afterDate = date( "Y年", $timeStamp ); // 月 $afterDate .= (Int)$ary[1] < 10 ? ' '.date("n月", $timeStamp) : date("n月", $timeStamp); // 日 $afterDate .= (Int)$ary[2] < 10 ? ' '.date("j日", $timeStamp) : date("j日", $timeStamp); // 曜日 $weekName = array('日', '月', '火', '水', '木', '金', '土'); $afterDate .= $weekName[ date("(w)", $timeStamp) ];
- kosukejlampnet
- ベストアンサー率44% (126/282)
<?php function lpad( $val ){ if (mb_strlen($val)<2) { $res = ' ' . $val; } else { $res = $val; } return $res; } function formatDate( $date ) { $aryYobi = array('日', '月', '火', '水', '木', '金', '土'); $date = strtotime($date); $year = date("Y年", $date); $month = lpad(date("n", $date)); $day = lpad(date("j日", $date)); $yobi = $aryYobi[date("w", $date)]; return $year . $month . '月' . $day . '(' . $yobi . ')'; } $date = '2011-08-18'; echo formatDate($date); ?>