PHPでの質問です。

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

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2006/10/02 08:39:38
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:HISI No.1

回答回数40ベストアンサー獲得回数4

ポイント35pt

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

PHP4です。

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

id:webuser

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

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

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

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

2006/09/28 22:06:41

その他の回答2件)

id:HISI No.1

回答回数40ベストアンサー獲得回数4ここでベストアンサー

ポイント35pt

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

PHP4です。

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

id:webuser

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

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

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

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

2006/09/28 22:06:41
id:m-nisi No.2

回答回数159ベストアンサー獲得回数3

ポイント25pt

$str = "2006/9/28";

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

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

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

id:webuser

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

2006/10/01 17:40:04
id:chankaz No.3

回答回数53ベストアンサー獲得回数3

ポイント20pt

こんな方法もあります。

$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」を使う方がスマートだと思います。

id:webuser

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

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

2006/10/02 08:38:37

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません