お寿司か焼き肉食べたい

まじめな事からしょーもない事まで
めにゅーを開く(投げやり)

現在時刻をよこせ

JSでも現在時刻を取得する関数は存在しています。
しかしながら、この現在時刻は、閲覧者のPCの時計を参照しますので
正確ではありません。
日付計算等にはよく使用したりします。
中々奥深い関数になっています。(ちょっとメソッドおおすぎんよ)

Date

Date関数と呼ばれるものを使用します。
この関数は必ずインスタンス化して使用します。

インスタンス化

インスタンス化とは、いわばコピーを使用する意味に近いです。
配列のもそうなんですが、変数に入れ込んで使わないと、複数で使う事ができなくなるためです。

Date関数の使用方法

// 基本形
var date1 = new Date();

これが基本形です。引数に何も設定しない場合は、PC時計での現在時刻が取得されます。

Date関数の引数について

基本2つ覚えておけばよいです。

  1. タイムスタンプ
  2. 日付指定

タイムスタンプ指定

タイムスタンプでの指定です。
タイムスタンプとは、1970年1月1日0時0分0秒から数えた【ミリ秒数】を指します。

// タイムスタンプ指定例
var date1 = new Date(1415608154355);

日付指定

普通に日付を指定します。
年月日時分秒ミリ秒を指定することができます。
年月日に関しては必須。
時分秒ミリ秒に関しては任意、指定ない場合は0で処理されます。 ※超重要事項
月に関しては 1月は0となっているので、指定する時は必ず-1を行う事

// 日付指定例
var date1 = new Date(年,月-1,日(,時,分,秒,ミリ秒));

こんな感じで任意の時間の時間等を指定できます。
では、続いてDateのメソッドを一部抜粋します。

getFullYear

年を取得します。
4桁の年数を返します。

var date = new Date();
alert(date.getFullYear());

getMonth

月を取得します。
2桁の月数を返します。
1月は01となります。

var date = new Date();
alert(date.getMonth());

getDate

日を取得します。

var date = new Date();
alert(date.getDate());

getDay

曜日を取得します。
戻り値は整数となっており、以下の対応となります。
0:日曜日
1:月曜日
2:火曜日
3:水曜日
4:木曜日
5:金曜日
6:土曜日

var date = new Date();
alert(date.getDay());

getHours

時間を取得します。
24時間表記で、0~24を返します。

var date = new Date();
alert(date.getHours());

getMinutes

分を取得します。
0~59の整数を返します。

var date = new Date();
alert(date.getMinutes());

getSeconds

秒を取得します。
0~59の整数を返します。

var date = new Date();
alert(date.getSeconds());

getMilliseconds

ミリ秒を取得します。
0~999の整数を返します。

var date = new Date();
alert(date.getMilliseconds());

getTime

タイムスタンプを返します。

var date = new Date();
alert(date.getTime());

Dateクラスメソッドじゃないけど、ミリ秒形式に変換してくれる子

Date.parse(str)

文字列に含まれる日付と時刻の値を解析し、その日付と時刻が表す値をミリ秒形式の値に変換して返します。
だけど弱点があって
どのような形式で日付や時刻が記述されていれば解析可能なのかは決まっておらず利用される環境にもよります。その為、対象の文字列から必ず日付や時刻が読み取れるわけではない点について注意して下さい。 つまりブラウザ等によっては・・・ですので、極力使わない方向が良いですね。

var ms1 = Date.parse("2009/08/11 08:14:45");
alert(ms1); // 1249946085000

お、おう。

正直な所、【PCの時刻なら本当意味ないじゃないか】と思われるかもですが
○日経過したのかどうか的な計算をする場合は必要なものなのかなぁと思っています。
僕にとってはタイムスタンプ変換機ですね。


//////////////////////////////////////////////////
// 例えば、何日経過している?を出したい場合
//////////////////////////////////////////////////

var getDate  = '2015/3/1'; // サーバからの現在時刻
var getDate2 = '2015/2/1'; // 判定したい日時

//-----------------------------------
// 取得したデータ文字列分割
//-----------------------------------
getDate  = getDate.split('/');  // スラッシュで分割
getDate2 = getDate2.split('/'); // スラッシュで分割

//-------------------------------------------------
// 文字列分割したデータを使ってDataオブジェクト化
//-------------------------------------------------
getDate  = new Date(getDate[0],getDate[1]-1,getDate[2]);
getDate2  = new Date(getDate2[0],getDate2[1]-1,getDate2[2]);

//-------------------------------------------------
// タイムスタンプの取得
//-------------------------------------------------
getDate  = getDate.getTime();
getDate2 = getDate2.getTime();

//-------------------------------------------------
// 比較
//-------------------------------------------------
if(getDate >= getDate2)
{
  // 現在データのほうが大きい
  var diff = getDate - getDate2; // 差分の取得
            86400
  if(diff >= 86400000)
  {
    // 1日以上
    diff = Math.floor(diff / 86400000); // 切り捨ての
    alert(diff+'日経過した');
  }
  else
  {
    // 1日未満
    alert('1日もたってない!');
  }
}
else
{
  // 現在データのほうが小さい。未来の登録?データがおかしいので処理の終了
 return false;
}

ミリ秒一覧

1秒 60000
1時間 3600000
12時間 43200000
24時間 86400000
1週間 604800000