Little Strange Software

スマホアプリの開発を行う LittleStrangeSoftware のブログです。

【JavaScript】経過時間を扱うgetTime()

 どうも!LSSです!!

 

ゲームなどのプログラムを書く際、「あるタイミング」から「今現在」まで、どれだけの時間が経ったかを計算する必要が出てくるケースがあります。

 

「放置ゲー」と呼ばれるものや、スマホゲームによくある「スタミナ」システム、時間経過で作物が育つ農場系ゲームなどが特にそうですね。

 

計算するには「時間(時刻)」を数値に変換する事ができれば、あとは足し算引き算するだけで済みます。

また、最初の「あるタイミング」を記録するのも「数値」として記録するのがやりやすそうです。

 

という事で、今回はJavaScriptで時間を扱う方法について試してみる事にします。

 

 

1970年1月1日 午前0時からの経過ミリ秒

 

 

コード

<div id="gamen1"> </div>
<script>// <![CDATA[
t1=new Date().getTime();
gamen1.innerHTML=t1;
// ]]></script>

 

まず、

<div id="gamen1"> </div>

で表示するための場所を用意しておきます。

そしてscript内に、

t1=new Date().getTime();

として、経過ミリ秒数を代入します。

new Date() は「現在の日付オブジェクト」、つまりスクリプトが実行されたその瞬間の「時間」を現すモノとなります。

その「時間」に対し、 .getTime() をつけると、「1970年1月1日 午前0時」から何ミリ秒経過した時間なのか?を数値で返してくれます。

 

そして取得できた値を、

gamen1.innerHTML=t1;

最初に用意しておいた「表示するための場所」である、id="gamen1"と指定した<div>タグの中に書きこんで、画面上にその数字が出てくる事になります。

 

なお、
gamen1.innerHTML=new Date().getTime();

と変数t1を使わずに書いても動作しますが、なんとなく分けてみました。

 

ちなみに、「1ミリ秒」は「1000分の1秒」です。

 

 

1970年1月1日 午前0時からの経過秒数

 

 

コード

<div id="gamen2"> </div>
<script>// <![CDATA[
t2=Math.floor(new Date().getTime()/1000);
gamen2.innerHTML="1970年1月1日 午前0時から、"+t2+"秒経過しました。";
// ]]></script>

 

ちょっとだけ分かりやすくするために、1000で割って「秒」にしましょう。

更に、いつからの秒数なのかも表示するという親切仕様^^

 

 t2=Math.floor(new Date().getTime()/1000);

と、一気に計算していますが、内側から見ていくと、

new Date().getTime()
これは先ほど書いた「ミリ秒」ですね。

new Date().getTime()/1000
それを1000で割ると、秒単位の数値になります。
でもそのままでは「.123」のように小数が後ろにつく事になるので、

Math.floor(new Date().getTime()/1000)
小数点以下を切り捨てる関数、 Math.floor で囲んであげます。

 

 

1970年1月1日 午前0時からの経過日数

 

 

コード

<div id="gamen3"> </div>
<script>// <![CDATA[
t3=Math.floor(new Date().getTime()/1000/60/60/24);
gamen3.innerHTML="1970年1月1日 午前0時から、"+t3+"日経過しました。";
// ]]></script>

 

「秒」も結構大きい数字になるので、分→時→日まで一気に計算してしまいましょう!

t3=Math.floor(new Date().getTime()/1000/60/60/24);

まず、「ミリ秒」を1000で割って「秒」に直したのと同様に、
「秒」を60で割って「分」、
「分」を60で割って「時間」、
「時間」を24で割って「日」、
を算出してみました。

 

なお「日」まででストップしたのは、「年」だと「うるう日」を考慮するのが大変、「月」だともっと大変だからですw

 

 

あとがき

結局「getTime()を使ってみた」というだけの記事でしたw

 

これで得た「経過ミリ秒」の数値を例えば、

 で解説した「WebStorage」に記録すると、いったんページを閉じて、後日開いた時にも
「前回の時に記録した時からどれだけ時間が経ったか」
を計算して、ゲームに反映させる事ができますね^^

 

 

 

 

ってなとこで、今回はこのへんで!

次回もまた、よろしくお願いします^^