サンプル・プログラムの実行例

サンプル・プログラムのダウンロード
dtformat.php | サンプル・プログラム本体 |
解説:ISO 8601形式のタイムスタンプを解釈する
0139: /**
0140: * ISO 8601(RFC 3339)形式のタイムスタンプを解釈する
0141: * @param string $str ISO 8601(RFC 3339)形式テキスト
0142: * @return string 解釈結果を格納する配列/年,月,月,日,時,分,秒の順に格納
0143: * NULL:エラー
0144: */
0145: function parse_dtformat($str) {
0146: $pat = '/(\d{4})(?:-(\d{2})(?:-(\d{2})(?:T(\d{2}):(\d{2})(?::(\d{2})(?:\.(\d+))?)?(Z|([+-]\d{2}):(\d{2}))?)?)?)?/i';
0147:
0148: return (preg_match($pat, $str, $match) > 0) ? $match : NULL;
0149: }
解説:parse_dtformat()の結果を日本語テキストに変換
0151: /**
0152: * parse_dtformat()の結果を日本語テキストに変換
0153: * @param array $arr 解釈結果配列
0154: * @return string日本語テキスト
0155: */
0156: function dt2str($arr) {
0157: static $tbl = array(
0158: 1=>'%d年',
0159: 2=>'%d月',
0160: 3=>'%d日',
0161: 4=>'%d時',
0162: 5=>'%d分',
0163: 6=>'%d秒',
0164: 8=>'(タイムゾーン %d時',
0165: 10=>'%d分)',
0166: );
0167:
0168: $res = '';
0169: foreach ($tbl as $key=>$form) {
0170: if (isset($arr[$key])) {
0171: $res .= sprintf($form, $arr[$key]);
0172: }
0173: }
0174: return $res;
0175: }
参考サイト
- PHPでRFC3339形式のタイムスタンプを表示する:ぱふぅ家のホームページ
登場する関数は、いままで使ったものばかりなので、とくに説明はしない。ISO 8601 形式を解釈するための正規表現が肝である。
ISO 8601 形式は RFC 3339 とほぼ同じ内容である。日本では、JIS X 0301 として規格化されている。
(2021年3月27日)PHP8対応,リファラ・チェック改良。