sit in a circle and chat happily

JavaScript 12日目

投稿日:2021-12-17
更新日:2022-03-24
js

Dateインスタンスの作成(続き)

ゲッターメソッド:インスタンスから値を取得する

メソッド名の先頭に「get」がついているもので、インスタンス内の値を取得(get)する。
基本的に、値の取得がメインなので引数なしで呼び出すことが多い。

メソッド名内容
インスタンス.getFullYear()インスタンスがもつ日時の「年」(4桁)を返す
インスタンス.getMonth()インスタンスがもつ日時の「経過月」(0-11)を返す
インスタンス.getDate()インスタンスがもつ日時の「日」(1-31)を返す
インスタンス.getDay()インスタンスがもつ日時の「曜日」(0-6)を返す
0:日 1:月 2:火 3:水 4:木 5:金 6:土
インスタンス.getTime()インスタンスがもつ日時を1970年1月1日00:00:00からのミリ秒単位の数値で返す
ゲッターメソッド
console.log('2回目の出力');
// 「()丸カッコ」は処理の呼び出し
// Dateインスタンスである「date1」内のメソッドを呼び出す
console.log(date1.getFullYear()); 
  // getFullYearメソッドを呼び出す → 「年」だけを取得できる・・・「2018」 
console.log(date1.getMonth());
 // 取得するのは「経過月:0(1月)~11(12月)」なので注意・・・「0(1月)」
console.log(date1.getDate());  // 日
console.log(date1.getDay());  // 曜日
console.log(date1.getTime());  // タイムスタンプ
コンソール出力内容

【問題】阿部寛の誕生日を元にDateインスタンスを作成する

コンソール出力内容
console.log('◆問題:阿部寛の誕生日');
// 阿部寛の誕生日を元にDateインスタンスを作成する
var abeBd = new Date('1964/ 6/ 22');

// メソッドを使って曜日番号をコンソール表示
console.log(abeBd.getDay());

console.log(abeBd);
var day = [
  '日',
  '月',
  '火',
  '水',
  '木',
  '金',
  '土',
  '日',
]

// console.log('阿部寛は' + day[abeBd.getDay()] + '曜日生まれ');
console.log('阿部寛は'
  + (abeBd.getMonth() + 1) + '月'
  + abeBd.getDate() + '日'
  + day[abeBd.getDay()] + '曜日生まれ');

セッターメソッド:インスタンスに値を設定する

メッソド名の先頭に「set」がついているもので、値を設定(set)する。
基本的に引数ありで呼び出す。引数の値で修正や更新をする。

メソッド名内容
インスタンス.setFullYear()引数y(4桁年)をインスタンスがもつ日時の「年」に設定、変更後日時のタイムスタンプを数値で返す
インスタンス.setMonth()引数mをインスタンスがもつ日時の「経過月」に設定、変更後日時のタイムスタンプを数値で返す
インスタンス.setDate()引数dをインスタンスがもつ日時の「日」に設定、変更後日時のタイムスタンプを数値で返す
インスタンス.setHours()引数hをインスタンス日時の「時」に設定、変更後日時のタイムスタンプを数値で返す
インスタンス.setTime(time)引数time(タイムスタンプ)をインスタンス日時に設定変更後日時のタイムスタンプを数値で返す
セッターメソッド
console.log('3回目の出力');
console.log(date1.setFullYear(2000));
// 「946695600000」を出力
// 引数で指定した「2000」で年を修正
// 戻り値で(メソッド呼び出し部分に戻る値)は修正後のタイムスタンプが出力
// ※タイムスタンプ
// 1970年1月1日0時0分からの経過ミリ秒
console.log(date1);
コンソール出力内容

【問題】

console.log('【問題】12-6');
console.log('◆2010年12月24日23時59分');
// date2.setFullYear(2010, 11, 24, 0, 23, 59,)
date2.setFullYear(2010);
date2.setMonth(11);
date2.setDate(24);
date2.setHours(23);
date2.setMinutes(59);
console.log(date2);

// ◆解答例2
date2.setFullYear(2010, 11, 24);
// 第1引数:年(必須)
// 第2引数:経過月(省略可)
// 第3引数:日(省略可)
date2.setHours(23,59)
// 第1引数:時(必須)
// 第2引数:分(省略可)
// 第3引数:秒(省略可)
// 第4引数:ミリ秒(省略可)

【追加問題】

console.log('◆阿部寛の誕生日は今年・・・');
abeBd.setFullYear(today.getFullYear()) 
// プログラム実行時の都市を変数thisyea 
console.log(day[abeBd.getDay()] + '曜日');
コンソール出力内容

変換ゲッターメソッド(トゥーメソッド):
        インスタンスの日時を文字列に変換して取得

console.log('4回目の出力');
console.log(date1);
console.log(date1.toString());
// ↑ 上記2つは同じ出力結果
// 参照型の変数(オブジェクトや配列)を管理する変数を
// コンソール出力する際は
// 文字列変換メソッド「toString()」が呼び出されている
// 「toString()」は参照先データを
// 既定のフォーマットで文字列かする

console.log(date1.toLocaleString());
コンソール出力内容

日付の調整

日付選択のセレクトボックスを理解してプログラムを作成していく

console.log('1回目の出力');
var date1 = new Date(2018, 6, 15);
console.log(date1.toLocaleDateString()); 
// date1の日付 → 2018/7/15 コンソール出力
// 「Locale」付きなのでローカライズされて表示される
date1.setMonth(date1.getMonth() + 1);
// date1の月を取得して「1月」足している → 2018/8/15
// ◆翌月変更処理
// 【処理の順番】
// 1.deta1.setMonth()を実行しようとするが
//   引数が確定していないので一旦保留
// 2.引数部分「date1.getMonth() + 1」を実行しようとするが
//   左辺が確定していない
// 3.date1.getMonth()を呼び出す
//   経過月「6」がかえってくる
//   deta1.getMonth() + 1
// 4.左辺が確定したので足し算 → 6 + 1 = 7
// 5.保留していた「1」を実行
//   date1.setMonth(7)
// 基準月を取得して「+1」すると翌月に変更

console.log(date1.toLocaleDateString());
// 変更された内容 ↑ をコンソール出力
date1.setDate(date1.getDate() - 1);
// date1の日にちを取得して「1日」引いている → 2018/8/14 
// ◆前日変更処理 :確定順
// date1.getDate() → 15
// 15 - 1 = 14
// date1.setDate(14)
// 日付が「15」から「14」に変更
//  ⇒基準日から「-1」することで前日に変更される
console.log(date1.toLocaleDateString());
// 変更された内容 ↑ をコンソール出力
コンソール出力表示
console.log('2回目の出力');
// 該当月の最終日を取得したい
var date2 = new Date('2024/2/15');
// var date2 = new Date('2018/8/20');
console.log(date2.toLocaleDateString());
// 「2024/2/15」を出力
date2.setMonth(date2.getMonth() + 1);
// 翌月に変更
console.log(date2.toLocaleDateString());
// 「2024/3/15」を出力
date2.setDate(0);
// 日付に「0」を設定することで
// 「1日」の前の日「前月の最終日」に変更される
console.log(date2.toLocaleDateString());
// 「2024/2/29」(確認用)
console.log(date2.getDate());
// 日付のみ取得して最終日の数値を得る
コンソール出力内容
console.log('3回目の出力');
// 変数codeにHTMLコードを貯めていく
var code = (date2.getMonth() + 1) + '月から選択:';
// 宣言と同時に「〇月から選択:」を代入
// 変更する部分である月の数字は
// 「経過月」を取得して「+1」(経過月+1=月)
code += '<select name="date">\n';
// for文の条件:date2.getDate()  ← 先ほど取得済みの「該当月の最終日」
// 最終日の数値を繰返し条件に「<=」で設定
for (var i = 1; i <= date2.getDate(); i++) {
  code += '<option value="' + i + '">' + i + '日</option>\n';
}
code += '</select>\n';

console.log(code);
document.getElementById('display1').innerHTML = code;

/*
◆最終的に画面に表示するコード◆
〇月から選択:
<select name="date">
  <option value="1">1日</option>
  <option value="2">2日</option>
           :
  <option value="〇">〇日</option>
</select>
*/

// ★内容が変わる部分には変数や処理を使用する
// ★内容が変わらない部分は文字列を使用する
うるう年の2月
カテゴリー