Date/Timestamp変換のまとめ
2013/07/17追記
@yutakikuchi_です。
※本記事の内容より詳しいものを書きました。
誰もが一度は陥る日付処理。各種プログラミング言語におけるDateTime型/TimeStamp型の変換方法のまとめ - Yuta.Kikuchiの日記
概要
- Mysqlからアプリケーションで日付情報を引くときDate型<=>Timestamp型の変換を行う事がしばしばある。
- 今日はPHP/Python/JavascriptのDate/Timestampの型変換についてまとめる。
- Javascriptの例ではSpiderMonkeyを利用している。
Date型の日付を出力する
php
<?php //現在時刻をDate型で出力 //date関数を使う場合 echo date("Y-m-d H:i:s") . "\n"; //結果 2011-10-14 00:00:00 //strftime関数を使う場合 echo strftime("%Y-%m-%d %H:%M:%S") . "\n"; //結果 2011-10-14 00:00:00
python
#! /usr/bin/env python # -*- coding:utf-8 -*- from datetime import * #現在時刻を表示 print datetime.now().strftime( '%Y-%m-%d %H:%M:%S' ) #結果 2011-10-14 00:00:00
Javascript
//Dateオブジェクトを利用 var d = new Date(); var year = d.getFullYear(); var month = d.getMonth() + 1; var day = d.getDate(); var hour = ( d.getHours() < 10 ) ? '0' + d.getHours() : d.getHours(); var min = ( d.getMinutes() < 10 ) ? '0' + d.getMinutes() : d.getMinutes(); var sec = ( d.getSeconds() < 10 ) ? '0' + d.getSeconds() : d.getSeconds(); print( year + '-' + month + '-' + day + ' ' + hour + ':' + min + ':' + sec ); //結果 2011-10-14 00:00:00
unixtimeを表示する
php
<?php // timestamp取得 echo time() . "\n"; //結果 1318518000 // micro秒まで出力 echo microtime() . "\n"; //結果 0.89138500 1318518000
python
#! /usr/bin/env python # -*- coding:utf-8 -*- from datetime import * import time #timestamp表示 print int( time.mktime( datetime.now().timetuple() ) ) //結果 1318518000
Javascript
print( parseInt( new Date() /1000 ) ); //結果 1318518000
Date型の日付をUnixTimeに変換する
php
<?php // Date型をtimestamp型に変換 echo strtotime( "2011-10-14 00:00:00" ) . "\n"; // 結果 1318518000
python
#! /usr/bin/env python # -*- coding:utf-8 -*- # from / import from datetime import * import time #Date型をtimestamp型に変換 stime = "2011-10-14 00:00:00" print int( time.mktime( datetime.strptime( stime, "%Y-%m-%d %H:%M:%S" ).timetuple() ) ) #結果 1318518000
Javascript
var ts = "2011-10-14 00:00:00"; print( Date.parse( ts.replace( /-/g, '/') ) / 1000 ); //結果 1318518000
timestampをdate型に変換
php
<?php // timestampをDate型に変換 echo date( "Y-m-d H:i:s", "1318518000" ) . "\n"; // 結果 2011-10-14 00:00:00
python
#! /usr/bin/env python # -*- coding:utf-8 -*- from datetime import * #timestamp型をDate型に変換 print datetime.fromtimestamp( 1318518000 ) # 結果 2011-10-14 00:00:00
Javascript
var ts = 1318518000; var d = new Date( ts * 1000 ); var year = d.getFullYear(); var month = d.getMonth() + 1; var day = d.getDate(); var hour = ( d.getHours() < 10 ) ? '0' + d.getHours() : d.getHours(); var min = ( d.getMinutes() < 10 ) ? '0' + d.getMinutes() : d.getMinutes(); var sec = ( d.getSeconds() < 10 ) ? '0' + d.getSeconds() : d.getSeconds(); print( year + '-' + month + '-' + day + ' ' + hour + ':' + min + ':' + sec ); //結果 2011-10-14 00:00:00
まとめ
- phpはdate,time,strtotime関数だけを覚えておけば大体のことは済みそう。また関数が1個で完結するので直感的にも分かりやすい。
- pythonはdatetimeオブジェクトの理解をしていないと使えない。オブジェクトとメソッドを指定するのが一番美しいと言えるかも。
- JavascriptのDate型出力がとても煩雑。date.toString()などのメソッドでDate型が出力できれば楽ですが、ブラウザの仕様によって挙動が異なる様子。timestampの出力は楽。