JavaScriptで日時を扱う時のメモ

May 31st, 2013

JavaScriptで時間の差や指定日時の何時間後などを求める事があったので、気になった所などを書き留めておこうと思います。


1000ミリ秒

PHPでタイムスタンプを取得した場合は秒形式の値が返されるけど、JavaScriptの場合はミリ秒形式の値が返ってくる。

JavaScriptで時間を求める時は、「1秒 = 1000ミリ秒」の値を加えて計算する。


Date.parse()

日時の文字列を解析して、ミリ秒形式の値を返すメソッド。

ただし「2000-01-01 00:00:00」のように日付に「-」が使われている場合は、NaNを返すので、「2000/01/01 00:00:00」に置換してから利用する。

var datetime = '2000-01-01 12:30:00';
var datetime_parse = datetime.replace(/-/g, '/'); // ハイフンをスラッシュに置換する
datetime_parse = Date.parse(datetime_parse); // ミリ秒形式の値に変換

date.setTime()

Dateクラスのオブジェクトに、新たな時間を設定できるメソッド。

値を設定する場合は、setTime()の引数にミリ秒形式の値を設定して利用する。

var d = new Date();
var datetime = '2000-01-01 12:30:00';
var datetime_parse = datetime.replace(/-/g, '/');
datetime_parse = Date.parse(datetime_parse);
d.setTime(datetime_parse); // datetimeの時間を設定

指定日時から20時間後の値を求める

var d = new Date()
    , one_sec = 1000 // 1秒
    , one_min = one_sec * 60 // 1分
    , one_hour = one_min * 60 // 1時間
    , datetime = '2000-01-01 08:45:50'
    , datetime_a = datetime.replace(/-/g, '/')
    , datetime_parse = Date.parse(datetime_a)
    , datetime_20h = datetime_parse + (one_hour * 20);
d.setTime(datetime_20h);
console.log(d);
/*
出力結果 : Sun Jan 02 2000 04:45:50 GMT+0900 (東京 (標準時))
*/

時間の差を求める

var one_sec = 1000 // 1秒
    , one_min = one_sec * 60 // 1分
    , one_hour = one_min * 60 // 1時間
    , datetime_a = '2000-01-01 08:45:50'
    , datetime_b = '2000-01-01 16:33:30';
datetime_a = datetime_a.replace(/-/g, '/');
datetime_b = datetime_b.replace(/-/g, '/');

var diff = Date.parse(datetime_b) - Date.parse(datetime_a)
    , diff_h = Math.floor(diff / one_hour) // 時間
    , diff_m = Math.floor(diff % one_hour / one_min) // 分
    , diff_s = Math.floor(diff % one_min / one_sec); // 秒
console.log(diff_h + '時間' + diff_m + '分' + diff_s + '秒');
/*
出力結果 : 7時間47分40秒
*/
May 31st, 2013