【お試し無料】本を、聴こう。

PHPでタイムスタンプを変換して日付を表示する

<景品表示法に基づく表記>本サイトには広告が含まれる場合があります。

php_timestamp
PHPでタイムスタンプへの変換とタイムスタンプからの変換メモです。
データベースの日付型からの出力などで使ったり、xmlやRSSでの日付形式などでもよく使う変換です。
PHPの場合は「date関数」「time関数」「strtotime関数」を覚えていればほとんどの場合に対処できるので、プログラムの中でも役立つタイムスタンプの変換をおさらいしてみます。

SPONSORED LINK

目次

タイムスタンプ変換

まずはPHPでタイムスタンプを変換する例を見てみましょう。かなり柔軟な利用ができることがわかると思います。

Date型をUNIXタイムスタンプに変換する

$date = "2009-11-11 11:11:11";
echo strtotime($date);
//結果:1257905471

UNIXタイムスタンプをdate関数で整形する

$date = time();
echo date("Y/m/d H:i:s",$date);
//結果:2014/05/03 23:05:31

time関数

現在時刻をUnix epoch(1970年1月1日 00:00:00 GMT)からの通算秒として返します。

print time();
//出力:1063785395

秒数で管理できるということは、現在から15分後は60*15=900なので900秒プラスした値ということになります。
その反対に過去の時間も瞬時に算出できますね。
人間は秒で動いている動物だと実感させられます。
一年は何秒なのだろう。
怖いので計算はまたの機会にします。

date関数

引数 timestamp で指定されたUNIXタイムスタンプを、与えられたフォーマット文字列によりフォーマットし、日付・時刻文字列を返します。 timestamp が省略された場合は現在の時刻、つまり time() の値が使われます。

print date("Y年m月d日 H時i分s秒");
//出力:2014年04月18日 20時50分31秒

date関数の中にあるフォーマット文字列以外はそのまま表示されますので「date(‘Y年m月d日’);」といった利用ができます。
「date(‘d day’);」はdもaもyもフォーマット文字列なのでdayと表示したい時には「¥」でエスケープが必要です。
「date(‘d ¥d¥a¥y’);」というわけですね。
知っているからこそ便利であって、知らないとエラーを招く物になってしまいます。
原始人に缶切を渡したらきっと使えません。

strtotime関数

引数 time にフォーマットされた日付・時刻文字列を指定して関数を呼び出すと、UNIXタイムスタンプへ変換して返します。失敗すると-1を返します。

print date("Y年m月d日 H時i分s秒", strtotime("2014-04-18 20:50:31"));
//出力:2014年04月18日 20時50分31秒

英文形式も変換できますので、「date( ‘Y/m/d’, strtotime(“03 Jun 2014”) );」なんてこともできてしまいます。
日付の形式を守っていれば使いまわせるのでdate系関数はとても便利ですね。
strtotimeは直訳すると「形式の日付」です。
直感的に操作もできます。
「strtotime(“+3 week 4 days 2 hours”);」こんな記述で「3週間と4日の2時間後」を取得できます。
strtotime(“私に王子様が現れる日”)とやると何年足されるのでしょうか。
冗談です。

まとめ

PHP問わずプログラムの世界では時間の扱いは結構重要です。データ管理の根源にもなりますので、初期段階でのプログラム設計からタイムスタンプの変換を減らす方式を使えればいいですね。
とは言っても外部データの取得時などで日付を比較しなければならない場面は多々ありますので、こういった関数を覚えてしまうと捗りますよ!

今日も知識欲は止まらない。

SPONSORED LINK
トップへ戻る