• ベストアンサー

2011-08-18>2011年 8月18日(木)

LAMPでくんでるのですが MySQLから 「last_modified」フィールドから「2011-08-18」という文字列を取得したとき、 これを、「2011年 8月18日(木)」という文字列に変えるにはどうすればいいのでしょうか? なお、8月の左は半角スペース1つあいてます。 よろしくお願い申し上げます。

質問者が選んだベストアンサー

  • ベストアンサー
  • Dags
  • ベストアンサー率78% (11/14)
回答No.2

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)
回答No.3

一回も動かしてないからバグがあったらごめんなさい。 他の方の作り方が自分とは違ってたので面白いなと思い、回答してみました。 $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) ];

回答No.1

<?php function lpad( $val ){   if (mb_strlen($val)<2) {     $res = '&nbsp;' . $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); ?>