問題
PHPで年月日の文字列(〇年〇月〇日)を日付の形式に変換するには?
解決策
- 「preg_match」を使用し、年月日を取り除き、各数値を配列。
- 「sprintf」を使用し、年は4桁、月は2桁、日は2桁になるように、各値に0埋めを行う。
「〇年〇月〇日」を日付の形式に変換
PHPで年月日の文字列(〇年〇月〇日)を再び活用することができると、さらに汎用性が広がります。
今回は、PHPで年月日の文字列(〇年〇月〇日)を日付の形式に変換する記述例をご紹介します。
年月日を取り除き、各数値を配列として取得する。
「preg_match」を使用し、年月日を取り除き、各数値を配列として取得します。
preg_match( "/([0-9]*)年([0-9]*)月([0-9]*)日/", '〇年〇月〇日の値', $data );
例:「2020年5月24日」という文字列の場合の配列「$data」の中身
データ | 場所 | 値 |
---|---|---|
$data[1] | 年 | 2020 |
$data[2] | 月 | 5 |
$data[3] | 日 | 24 |
0埋めを行う。
「sprintf」を使用し、年は4桁、月は2桁、日は2桁になるように、各値に0埋めを行います。
$postdate = sprintf( "%04.4d%02.2d%02.2d", $data[1], $data[2], $data[3] );
「sprintf」の第一引数の記述例
第一引数 | 内容 | 例:1の変更後 |
---|---|---|
%02d | 2桁になるように0埋めする。 | 1 → 01 |
%03d | 3桁になるように0埋めする。 | 1 → 001 |
%04d | 4桁になるように0埋めする。 | 1 → 0001 |
参照
以下のサイトが、より詳しく解説してくれています。
【[PHP]年月日の文字が入った日付文字列を,YYYYMMDDに変換する(2012年1月31日 -> 20120131) 】
http://nanoappli.com/blog/archives/3041
【PHPで数字の0埋めをする2つの方法 – sprintf関数とstr_pad関数】
https://wp.tech-style.info/archives/582
コメント