指定日の unixtime を求める方法
id:hnw さんの日記に以下のような投稿がありましたので、反応してみます。
特定の日時のunixtimeが知りたくなった時って皆さんどうしてますか?例えば2009/09/26 23:00:00 JSTであれば次のワンライナーで求められます。
$ php -r 'echo mktime(23,0,0,9,26,2009);'
http://d.hatena.ne.jp/hnw/20090926
1253973600
個人的は、普通に strtotime() を使う気がします。引数で悩む必要がありません。
php -r 'var_dump( strtotime( "2009-09-26 23:00:00" ) );' int(1253973600)
最近の PHP では、DateTime クラスを使用した方が良いかもしれません。こちらは、strtotime() や mktime() よりも広い範囲を扱えます。
php -r '$d = new DateTime( "2009-09-26 23:00:00" ); var_dump( $d->format( "U" ) );' string(10) "1253973600"
以下でも同じです。
php -r 'var_dump( date_format( date_create( "2009-09-26 23:00:00" ), "U" ) );' string(10) "1253973600"
そういえば、以前、以下のような関数を作っていました。php.ini で timezone が設定されていない場合も想定しています。
<?php function get_unixtime( $format = 'now', $timezone = 'Asia/Tokyo' ) { try { $datetime = new DateTime( $format, new DateTimeZone( $timezone ) ); return $datetime->format( 'U' ); } catch ( Exception $ex ) { return FALSE; } }