人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPでの質問です。
2006/9/28というような文字列があり、
これを、yyyymmddの形式、つまり20060928にフォーマットしたいと思います。
スマートな方法をご教授ください。
2006/9/28 → 20060928

●質問者: webuser
●カテゴリ:ウェブ制作
✍キーワード:2006 28 PHP スマート フォーマット
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● pkb_wn
●35ポイント ベストアンサー

printf(date('Ymd',strtotime('2006/9/28')));

PHP4です。

今ちょっと試してみました。

◎質問者からの返答

早速ありがとうございます。

strtotime('yyyy/m/dd')でもタイムスタンプが取れるんですねー

strtotimeは守備範囲が広いですね。

他にもありましたらお願いします。


2 ● m-nisi
●25ポイント

$str = "2006/9/28";

$ymd = split("/",$str);

$after = sprintf("%04d%02d%02d",$ymd[0],$ymd[1],$ymd[2]);

こんな感じでも出来ます。

◎質問者からの返答

なるほど、ありがとうございます。


3 ● chankaz
●20ポイント

こんな方法もあります。

$date[0] = '2006/9/28';
$date[1] = '2006-9-28';
$date[2] = '2006年9月28日';

foreach ($date as $val) {
$parts = preg_split('/([^\d]+|[\/-])/', $val);
echo date("Ymd", mktime(0, 0, 0, $parts[1], $parts[2], $parts[0]))."\n";
}

区切り文字が「スラッシュ (/)」に限定されるのでしたら正規表現は必要ないので、「explode」の方が処理が早いです。

$date = '2006/9/28';
$parts = explode('/', $date);

echo date("Ymd", mktime(0, 0, 0, $parts[1], $parts[2], $parts[0]));

個人的には1の回答者さんのように「strtotime」を使う方がスマートだと思います。

◎質問者からの返答

なるほど、データ形式がまちまちの場合に使えそうですね。

いろいろなご意見を聞けたところでそろそろ締め切りたいと思います。皆さんありがとうございました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ