PHPでの質問です。

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

回答の条件
  • 1人2回まで
  • 登録:2006/09/28 21:14:20
  • 終了:2006/10/02 08:39:38

ベストアンサー

id:HISI No.1

pkb_wn回答回数40ベストアンサー獲得回数42006/09/28 21:42:55

ポイント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

pkb_wn回答回数40ベストアンサー獲得回数42006/09/28 21:42:55ここでベストアンサー

ポイント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

m-nisi回答回数159ベストアンサー獲得回数32006/09/28 23:04:06

ポイント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

chankaz回答回数53ベストアンサー獲得回数32006/10/02 03:04:07

ポイント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

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

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

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

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

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません