aswww log

Webエンジニアの技術録。Linuxとかウェブ制作・ソフト開発とか

javascriptで時間操作がベンリ

今時jQueryといいつつも、jQueryがそもそもjavascriptのライブラリなわけだから当然jQueryを使う=javascriptを使う になるわけで。
そのjavascriptのDateオブジェクトの時刻操作が以外と便利なことが判明したのでメモ。

Dateオブジェクト生成したい場合は以下のとおり生成できる。

//引数無しで現在日時で生成
var date=new Date();
//引数有りで指定日時で生成(例は2013年11月20日 2:23)
var date=new Date(2013,11-1,20,13,2,23);

※Dateオブジェクトではなぜか月を0〜11で扱われてしまうので-1しとく。

これで例えば時間だけを取りたい時は以下のとおりに取り出せる。

//時間を取り出す(この場合hourの値は2)
var hour = date.getHours()

しかしこれだけでなく、setメソッドを使えば何分後とかの計算もしてくれる。

date.setMinutes(date.getMinutes()-60);

ここで優秀なのが、60分後を指定するとちゃんと時間をインクリメント(繰り上げ)してくれるとこ
つまり、以下の場合、「2時23分」を指定したDateオブジェクトに60(分)をsetしたため、Dateオブジェクトのもつ時刻は60分後の「3時23分」になる。(date.getHourの値が3になる)

var date=new Date(2013,11-1,20, 2,23);
//60(分)をsetする
date.setMinutes(date.getMinutes()+60);

ちなみにsetメソッドの引数に"-"(マイナス)を指定すれば何分前を指定することができる。これならjavascriptで時間操作の繰り上げ繰り下げに悩まされることはなさそう。

参考:
Date Object(setメソッド)
http://www.artemis.ac/contents/javascript/jsdate.htm
JavaScript による日付・時刻・時間の計算・演算のまとめ
http://www.hoge256.net/2007/08/64.html