PHPでの日付フォーマット変換方法
ハッカーランク(hackerrank)にて日付変換の問題をPHPで解くにあたって、日付関連の関数を調べたのでそのメモです。
問題
- "07:05:45PM"を"19:05:45"に変換するPHPを書け
Sample Input
- 07:05:45PM
Sample Output
- 19:05:45
プログラム
要点
- strtotime関数で、日付文字列をタイムスタンプに変換する
- 日付文字列を良い具合に解釈して、タイムスタンプ (1970 年 1 月 1 日 00:00:00 UTC からの経過秒数) に変換してくれる関数
- PHP: strtotime - Manual
- JavaだとSimpleDateFormatクラスで、日付文字列を解析するには、日付形式を指定("yyyy-MM-dd"のような)する必要があるが、PHPではその必要がない(JavaよりもPHPの方が楽だね!)
- 解釈できる日付書式は以下、ページに描かれている。
- date関数で、タイムスタンプを日付文字列に変換する
- タイムスタンプを与えられたフォーマット文字列によりフォーマットし、日付文字列を返す関数
- PHP: date - Manual
詳細
<?php $handle = fopen("php://stdin", "r"); fscanf($handle, "%s", $time); date_default_timezone_set('Asia/Tokyo'); // strtotime: 日付文字列をタイムスタンプに変換する // date: タイムスタンプを日付文字列に変換する echo date("H:i:s", strtotime($time)); ?>