はじめに
前提
まず前提として、この記事を書いているのは未経験からプログラミングに挑戦中の者になります。学習はフィヨルドブートキャンプに参加しながら取り組んでいて、現役のエンジニアの方からレビューをもらいながら進めています。
現在の学習状況は以下を随時更新しているので興味ある方はご覧ください。
hirano-vm4.hatenablog.com
筆者は執筆時点で、Ruby(Ruby on Rails)のプラクティスが終わったあとにJavaScriptに取り組んでいるので、完全に0からではありません。JavaScriptを多言語から学ぶにあたって、まず覚えるべき要点をまとめました。
詳しい解説ではなく要点をまとめた学習記録・ノートになりますのでご注意ください。
記事の本体は以下にになります。長くなってしまったので別記事として書いているものとなります。ご注意ください。
hirano-vm4.hatenablog.com
Dateオブジェクト
JavaScriptにはDateオブジェクトが用意されている。日付や時刻を扱うことができる。
インスタンスを作成すると特定の日時を表す値を持つ(この値は内部的には 1970 年 1 月 1 日 0 時 0 分 0 秒 UTC からの経過ミリ秒という形式で保管されている)。
developer.mozilla.org
Dateオブジェクトのインスタンスを作成
Dateオブジェクトのコンストラクタの種類
Dateオブジェクトのインスタンスを作成するにはコンストラクタを使用する。4種類のコンストラクタがしようできる。
現在日時のDateオブジェクトのインスタンスを作成
引数を指定せずに Date オブジェクトのインスタンスを作成すると、現在の日時の値を持つインスタンスを作成する。
new Date()
let d = new Date();
console.log(d.toString());
console.log(d.toUTCString());
経過ミリ秒を指定してDateオブジェクトのインスタンスを作成
基準日時 1970 年 1 月 1 日 0 時 0 分 0 秒 UTC からの経過ミリ秒を指定して Date オブジェクトのインスタンスを作成する。
new Date(経過ミリ秒数)
- 引数に指定した基準日時からの経過ミリ秒数で表される日時の値を持つ Date オブジェクトのインスタンスを作成する
- このコンストラクタでは UTC からの経過ミリ秒で日時を指定するため、タイムゾーンについて考慮する必要がない
let day = new Date(10000);
console.log(day.toUTCString());
日時を表す文字列を指定してDateオブジェクトのインスタンスを作成
日時を表す文字列を指定して Date オブジェクトのインスタンスを作成する。タイムゾーンを指定しなかった場合は、ローカルの環境で設定されているタイムゾーンでの日時が指定されたものとをして扱われる。
new Date(日付と時刻を表す文字列)
let d1 = new Date("2023-11-07T21:48:15");
console.log(d1.toString());
let d2 = new Date("2023-11-07");
console.log(d2.toString());
let d3 = new Date("2023-11-07T21:48:15Z");
console.log(d3.toString());
console.log(d3);
年/分などを数値で指定してDateオブジェクトのインスタンスを作成
年、月、日、時、分、秒、ミリ秒の数値を指定してDateオブジェクトを作成する。
new Date(年, 月 [, 日 [, 時 [, 分 [, 秒 [, ミリ秒]]]]])
- 年と月については必須の項目(それ以外は省略できる:省略した場合、日は 1 に、それ以外の 時、分、秒、ミリ秒は 0 が設定される)
- 年は 4 桁or2 桁で指定(2 桁で指定した場合は
1900 + 年
となる)
- 月は 0 から 11 の値で指定(1月が0、12月が11)
- 年月だけで日付を指定しないと1日になる
let d1 = new Date(2023, 11);
console.log(d1.toString());
let d2 = new Date(10, 11, 31);
console.log(d2.toString());
let d3 = new Date(2023, 7, 31, 12, 30, 1, 110);
console.log(d3.toString());
コンストラクタをnew演算子をつけずに呼びだした場合
現在の日時を表す文字列を返す
let today = Date();
console.log(today.toString());
Dateオブジェクトの値を文字列で取得
日付と時刻を文字列として取得する(toString)
- toString メソッドは、 Date オブジェクトが持つ日付と時刻の値を文字列として返す
- タイムゾーンはローカルの環境で設定されているタイムゾーンが使用される
Dateオブジェクト.toString()
let today = new Date();
console.log(today.toString());
日付を文字列として取得する(toDateString)
- toDateStringメソッドは、Dateオブジェクトが持つ日付の値を文字列として返す
Dateオブジェクト.toDateString()
let today = new Date();
console.log(today.toDateString());
時間は表示されなくなる。
時刻を文字列として取得(toTimeString)
- toTimeString メソッドは、Dateオブジェクトが持つ時刻の値を文字列として返す
let today = new Date();
console.log(today.toTimeString());
時間だけが返ってくる。
UTCをタイムゾーンとして日付と時刻を文字列として取得(toUTCString)
- toUTCString メソッドは、Dateオブジェクトが持つ日付と時刻の値を文字列として返す
- タイムゾーンは UTC が使用される
let today = new Date();
console.log(today.toUTCString());
UTCをタイムゾーンとして日付と時刻(ミリ秒含)を文字列として取得(toJSON)
- toJSON メソッドは、Dateオブジェクトが持つ日付と時刻の値を文字列として返す
- タイムゾーンは UTC
let today = new Date();
console.log(today.toJSON());
Dateオブジェクトの値を指定のロケール形式にした文字列で取得
日付と時刻を指定したロケールの形式で文字列として取得(toLocaleString)
- toLocaleString メソッドは、Date オブジェクトが持つ日付と時刻の値を文字列として返す
- ロケールを省略した場合はブラウザに設定されているロケールを使用
Dateオブジェクト.toLocaleString([ロケール[, オプション]])
let today = new Date();
console.log(today.toLocaleString("en-US"));
console.log(today.toLocaleString("ja-JP"));
console.log(today.toLocaleString());
日付を指定したロケールの形式で文字列として取得(toLocaleDateString)
- toLocaleDateString メソッドは、Dateオブジェクトが持つ日付の値を文字列として返す
こちらは時間はなく年月日のみ
- ロケールを省略した場合はブラウザに設定されているロケールを使用
Dateオブジェクト.toLocaleDateString([ロケール[, オプション]])
let today = new Date();
console.log(today.toLocaleDateString("en-US"));
console.log(today.toLocaleDateString("ja-JP"));
console.log(today.toLocaleDateString());
時刻を指定したロケールの形式で文字列として取得(toLocaleTimeString)
- toLocaleTimeString メソッドは、Dateオブジェクトが持つ時刻の値を文字列として返す
こちらは時間のみ
- ロケールを省略した場合はブラウザに設定されているロケールを使用
Dateオブジェクト.toLocaleTimeString([ロケール[, オプション]])
let today = new Date();
console.log(today.toLocaleTimeString("en-US"));
console.log(today.toLocaleTimeString("ja-JP"));
console.log(today.toLocaleTimeString());
Dateオブジェクトの値を基準時間からの経過ミリ秒の値で取得
日付と時刻を経過ミリ秒の値として取得(getTime)
- getTime メソッドは、Date オブジェクトが持つ日付と時刻の値を基準日時からの経過ミリ秒の値として返す
Dateオブジェクト.getTime()
let day = new Date(2000);
console.log(day.getTime());
let today = new Date();
console.log(today.getTime());
曜日を取得
- Javascriptを使って曜日を取得するには、Dateオブジェクトに対してgetDay()メソッドを使う
Dateオブジェクト.getDay())
- getDay()メソッドはその曜日に応じて “0〜6” の数値を返す
- 0を日曜日で、6は土曜日となる
曜日 |
|
日曜日 |
0 |
月曜日 |
1 |
火曜日 |
2 |
水曜日 |
3 |
木曜日 |
4 |
金曜日 |
5 |
土曜日 |
6 |
なので配列で各曜日の文字列を作って置き換える作業が必要になる。
const days = [
"日曜日",
"月曜日",
"火曜日",
"水曜日",
"木曜日",
"金曜日",
"土曜日",
];
const today = new Date();
console.log(days[today.getDay()]);
日付と時刻の値を取得するメソッドの一覧
Date オブジェクトが持つ値から以下のメソッドを使って様々な値を限定して取得することができる(ローカルの環境で設定されているタイムゾーンが使用される)。
各メソッドのgetあとにUTCをつけるとUTCタイムゾーンの値も取得可能(例:getUTCDay
)
メソッド |
動作 |
getFullYear |
年の値を取得する |
getMonth |
月の値を取得する |
getDate |
日の値を取得する |
getHours |
時の値を取得する |
getMinutes |
分の値を取得する |
getSeconds |
秒の値を取得する |
getMilliseconds |
ミリ秒の値を取得する |
月の値を取得する(getMonth)
- Date オブジェクトが持つ日付と時刻の値からローカルのタイムゾーンでの「年」の値を数値で返す
- 月の値を 0 から 11 の数値で返します。 0 が 1 月、 1 が 2月、 11 が 12 月に相当ので注意
Dateオブジェクト.getFullYear()
日の値を取得する(getDate)
- Date オブジェクトが持つ日付と時刻の値からローカルのタイムゾーンでの「日」の値を数値で返す
Dateオブジェクト.getDate()
時の値を取得する(getHours)
- Date オブジェクトが持つ日付と時刻の値からローカルのタイムゾーンでの「時」の値を数値で返す
- 時の値を 0 から 23 までの数値で返す
Dateオブジェクト.getHours()
分の値を取得する(getMinutes)
- Date オブジェクトが持つ日付と時刻の値からローカルのタイムゾーンでの「分」の値を数値で返す
Dateオブジェクト.getMinutes()
秒の値を取得する(getSeconds)
- Date オブジェクトが持つ日付と時刻の値からローカルのタイムゾーンでの「秒」の値を数値で返す
Dateオブジェクト.getSeconds()
ミリ秒の値を取得する(getMilliseconds)
- Date オブジェクトが持つ日付と時刻の値からローカルのタイムゾーンでの「ミリ秒」の値を数値で返す
Dateオブジェクト.getMilliseconds()
月の初日(1日)と月末の日にちを取得する
月(コード実行日の属する月)の初日の場合
let today = new Date();
let firstDayOfMonth = new Date(today.getFullYear(), today.getMonth(),1);
まず、new Date()
で実行したその時のDateオブジェクトを作成し変数に入れる。その変数を使って新しいDateオブジェクトを作成する。
引数に(today.getFullYear(), today.getMonth(),1)
とすることでその日の年・月が入る。月初めは常に1日なので1が入る。月に関しては1月が0になるので、表示上は+1する必要がある。
月(コード実行日の属する月)の最終日の場合
上記と同じ容量で引数の日にちの部分を0
とすることで最終日が取得できる。ただし0とすると前月の末日が表示されるため、今月の場合は月に+1、翌月の場合は月に+2する必要がある。
前月の最終日
let today = new Date();
let lastDayOfMonth = new Date(today.getFullYear(), today.getMonth(), 0)
今月の最終日
let today = new Date();
let lastDayOfMonth = new Date(today.getFullYear(), today.getMonth() + 1, 0)
翌月の最終日
let today = new Date();
let lastDayOfMonth = new Date(today.getFullYear(), today.getMonth() + 2, 0)
Dateオブジェクトの値に年、月、分、秒などの新しい値を設定
Date オブジェクトが持つ値に対して日付と時刻の値をそれぞれ設定するメソッドが用意されている。
日付と時刻の値を設定するメソッド一覧
各メソッドのgetの後にUTC
をつけると、UTCタイムゾーンで設定され(例:setUTCFullYear
)、そうでない場合はローカル環境に設定されているタイムゾーンとなる。
メソッド |
動作 |
setFullYear |
年の値を設定する |
setMonth |
月の値を設定する |
setDate |
日の値を設定する |
setHours |
時の値を設定する |
setMinutes |
分の値を設定する |
setSeconds |
秒の値を設定する |
setMilliseconds |
ミリ秒の値を設定する |
例
let today = new Date();
console.log(today.toString());
today.setFullYear(2000);
console.log(today.toString());
today.setFullYear(1999, 11, 20);
console.log(today.toString());
秒だけ、日にちだけなどに合わせてメソッドを使い分ける。
ローカルとUTCのタイムゾーンの差を取得する(getTimezoneOffset)
let today = new Date();
console.log(today.toString());
console.log(today.getTimezoneOffset());
Dateオブジェクト.getTimezoneOffset()