サンプル・プログラムの実行例
サンプル・プログラムのダウンロード
dtformat.php | サンプル・プログラム本体 |
解説:ISO 8601形式のタイムスタンプを解釈する
139: /**
140: * ISO 8601(RFC 3339)形式のタイムスタンプを解釈する
141: * @param string $str ISO 8601(RFC 3339)形式テキスト
142: * @return string 解釈結果を格納する配列/年,月,月,日,時,分,秒の順に格納
143: * NULL:エラー
144: */
145: function parse_dtformat($str) {
146: $pat = '/(\d{4})(?:-(\d{2})(?:-(\d{2})(?:T(\d{2}):(\d{2})(?::(\d{2})(?:\.(\d+))?)?(Z|([+-]\d{2}):(\d{2}))?)?)?)?/i';
147:
148: return (preg_match($pat, $str, $match) > 0) ? $match : NULL;
149: }
解説:parse_dtformat()の結果を日本語テキストに変換
151: /**
152: * parse_dtformat()の結果を日本語テキストに変換
153: * @param array $arr 解釈結果配列
154: * @return string 日本語テキスト
155: */
156: function dt2str($arr) {
157: static $tbl = array(
158: 1=>'%d年',
159: 2=>'%d月',
160: 3=>'%d日',
161: 4=>'%d時',
162: 5=>'%d分',
163: 6=>'%d秒',
164: 8=>'(タイムゾーン %d時',
165: 10=>'%d分)',
166: );
167:
168: $res = '';
169: foreach ($tbl as $key=>$form) {
170: if (isset($arr[$key])) {
171: $res .= sprintf($form, $arr[$key]);
172: }
173: }
174: return $res;
175: }
参考サイト
- PHPでRFC3339形式のタイムスタンプを表示する:ぱふぅ家のホームページ
登場する関数は、いままで使ったものばかりなので、とくに説明はしない。ISO 8601 形式を解釈するための正規表現が肝である。
ISO 8601 形式は RFC 3339 とほぼ同じ内容である。日本では、JIS X 0301 として規格化されている。
(2021年3月27日)PHP8対応,リファラ・チェック改良。