Y's note

Web技術・プロダクトマネジメント・そして経営について

本ブログの更新を停止しており、今後は下記Noteに記載していきます。
https://note.com/yutakikuchi/

Date/Timestamp変換のまとめ

概要

  • 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の出力は楽。