2006/9/28というような文字列があり、
これを、yyyymmddの形式、つまり20060928にフォーマットしたいと思います。
スマートな方法をご教授ください。
2006/9/28 → 20060928
printf(date('Ymd',strtotime('2006/9/28')));
PHP4です。
今ちょっと試してみました。
早速ありがとうございます。
strtotime('yyyy/m/dd')でもタイムスタンプが取れるんですねー
strtotimeは守備範囲が広いですね。
他にもありましたらお願いします。
$str = "2006/9/28";
$ymd = split("/",$str);
$after = sprintf("%04d%02d%02d",$ymd[0],$ymd[1],$ymd[2]);
こんな感じでも出来ます。
なるほど、ありがとうございます。
こんな方法もあります。
$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」を使う方がスマートだと思います。
なるほど、データ形式がまちまちの場合に使えそうですね。
いろいろなご意見を聞けたところでそろそろ締め切りたいと思います。皆さんありがとうございました。
早速ありがとうございます。
strtotime('yyyy/m/dd')でもタイムスタンプが取れるんですねー
strtotimeは守備範囲が広いですね。
他にもありましたらお願いします。