Dateオブジェクト

オブジェクト

  • JavaScriptに用意されている組み込みオブジェクト
  • Webページが表示された時点で利用できるオブジェクト
  • 必要に応じてユーザーが自分で生成するオブジェクト
Dateオブジェクト
  • 日付時刻をデーターとして管理する
  • Dateコンストラクタを引数なしで実行すると、現在の日付時刻を管理する「Dateオブジェクト」が生成される


Dateオブジェクトのインスタンスを生成

  • new演算子でオブジェクトを生成
  • 生成されて利用可能になったオブジェクトのことを「インスタンス」と呼びます
now = new Date();


Dateオブジェクトを生成

  • 「toString」メソッドは、オブジェクトの内容を文字列にして戻すメソッド
  • 「String」オブジェクトの場合には、日付時刻を文字列(英字)にして戻します
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>オブジェクトを生成する</title>
</head>
<body>
<script>
var now;
now = new Date();
document.write('<h1>' + now.toString() + '</h1>');
</script>
</body>
</html>


Fri Jan 11 2013 10:05:52 GMT+0900 (JST)


指定した日時のDateオブジェクトを生成

<!DOCTYPE html>
<html lang='ja'>
<head>
<meta charset='UTF-8'>
<title>オブジェクトを生成する</title>
</head>
<body>
<script>
var aDay;
aDay =  new Date(2013, 0, 11, 15, 55, 50);
document.write('<h1>' + aDay.toString() + '</h1>');
</script>
</body>
</html>


Fri Jan 11 2013 15:55:50 GMT+0900 (JST)

オブジェクト生成について

new演算子とコンストラクタ
  • コンストラクタは特別な関数
  • 「new演算子+コンストラクタ」でインスタンスを生成する
  • インスタンスを生成すると、オブジェクトに用意されているさまざまなメソッドが利用できます


変数 = new コンストラクタ(引数1, 引数2, ・・・)


toStringメソッド

  • オブジェクトの内容を文字列にして戻す
  • toStringメソッドは省略できる
document.write('<h1>', aDay, '</h1>');


日付時刻を文字列として指定してDateオブジェクトを生成する

  • 「時:分:秒」を省略した場合は「0:0:0」とみなされます
  • 2013年1月11日15時55分0秒
var theDay = new Date('January 11, 2013 15:55:00');

日付や時刻の操作

Dateオブジェクトのメソッド
  • 日付を「xxxx年xx月xx日」の形式で表示する
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset='UTF-8'>
<title>Dateオブジェクトのメソッドを使う</title>
</head>
<body>
<script>
var now, date;
now = new Date();

date = now.getFullYear() + '年' 
	+ (now.getMonth() + 1) + '月'
	+ now.getDate() + '日';
document.write('<h1>' + date + '</h1>');
</script>
</body>
</html>


getTimeメソッドで日数の差を求める

  • 「ミリ秒」単位(1/1000秒)で戻す
  • diff:difference
  • 日数として使用するには「少数点以下の桁」が不要
  • 「少数点以下を切り上げる」には、「Mathオブジェクトのceilメソッド」を利用します



diff = day2.getTime() - day1.getTime();

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset='UTF-8'>
<title>Dateオブジェクトのメソッドを使う</title>
</head>
<body>
<script>
var now, date;
now = new Date();

var gantan, days, diff;
//来年の1月1日を表すDateオブジェクトを生成、今年の年を求め1を足して来年を設定、0は1月、1日
gantan = new Date(now.getFullYear() + 1, 0, 1); 

//来年の1月1日と現在時刻の時間差をミリ秒単位で求める
diff = gantan.getTime() - now.getTime(); 

//秒を日数に換算し小数点以下を切り上げる
days = Math.ceil(diff / (24 * 60 * 60 * 1000)); 

document.write('<h1>ことしの残り日数:' + days +  '</h1>');
</script>
</body>
</html>
Dateオブジェクトの主なメソッド

メソッド 説明
getFullYear 年を4桁の数値で戻します
getMonth 月を戻します。戻り値は「0」が1月、「1」が2月・・・
getDay 曜日を戻します。戻り値は「0」が日曜日、「1」が月曜日・・・
getDate 日を戻します
getHours 時間を戻します。時間は24時間形式で、戻りの範囲は「0〜23」
getMinutes 分を戻します
getSeconds 秒を戻します



var date = now.getFullYear() + '年'
  + (now.getMonth() + 1) + '月' //戻り値に1を足す
  + now.getDay() + '日';

日時時刻の設定
  • 「setFullYear」で年を設定
  • 変数「aDay」に格納されているDateオブジェクトのインスタンスの日時を1年後に設定するには


aDate.setFullYear(aDay.getFullYear() + 1) ;

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>現在時刻を表示する</title>
</head>
<body>
<script>
var now, hour, minute;
now = new Date();
hour = now.getHours();
minute = now.getMinutes();
  document.write('<h1>');
  document.write('現在時刻:');
  document.write(hour, '時', minute, '分');
		document.write('</h1>');
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>時間によってメッセージを変更する</title>
</head>
<body>
<script>
// 時間によってメッセージを変更する
var today;
var hour;
today = new Date();
hour = today.getHours();

  document.write('<h1>');
if (hour < 12) {
  document.write('おはようございます');
} else if (hour < 18) {
  document.write('こんにちは');
} else if (hour < 24) {
  document.write('こんばんは');
}
document.write('</h1>');
</script>
</body>
</html>

まとめ

  • オブジェクトは、new演算子とコンストラクタで生成する
  • 生成されて利用可能になったオブジェクトを、インスタンスと呼ぶ
  • Dateオブジェクトの生成には、Dateコンストラクタを使用する
  • Dateオブジェクトには、日付時刻を操作するさまざまなメソッドが用意されている
  • 時間差を計算するには、「getTime」メソッドを使う
  • 小数点以下を切り上げる、「Math.ceil」メソッド