日付のJavascript

JS

うるう年もあれば、4月から始める年度もある日付

今回は日付についてのJavascriptのメモです。

現在時刻を取得

現在時刻を取得するには

new Date()

とすればOK。でもどう表示されるかというと、こうなります。

Thu Mar 14 2024 17:33:02 GMT+0900 (日本標準時)

タイムゾーン情報(GMT+0900 (日本標準時))が出るので、toLocaleString()をつけます。

new Date().toLocaleString('ja-JP')

toLocaleString()はJavaScriptのDateオブジェクトや数値をロケール(地域設定)に応じた文字列に変換するメソッドです。

カッコ内にエリアの地域設定をつけるとタイムゾーン情報が消えます。

2024/3/14 18:16:25
new Date().toLocaleDateString()

toLocaleDateString()はJavascriptのDateオブジェクトのメソッドで、

日付をロケール(地域設定)に応じた文字列に変換し、時間を含めず日付部分だけを表示します。

こうすれば時間が消えました。

2024/3/15

他にもDateオブジェクトを文字列に変換するメソッドとして

toISOString() があります。

toLocaleDateString()との違いは、

ロケールを設定せず、国際標準時(UTC)に基づいた日付と時刻の文字列を生成します。

var dateValue = new Date('2024-06-05T12:30:00');
console.log(dateValue.toISOString()); // "2024-06-05T12:30:00.000Z"
console.log(dateValue.toISOString().split('T')[0]); // "2024-06-05"(日付部分だけを取り出す場合)

isNaN()

isNaNは引数が(Not-a-Number、数値でない)であるかどうかを判断するために使用されます。

console.log(isNaN(123));        // false(123は数値)
console.log(isNaN('123'));      // false('123'は文字列ですが数値として評価されます)
console.log(isNaN('hello'));    // true('hello'は数値ではない)
console.log(isNaN(NaN));        // true(NaNは数値ではない)
console.log(isNaN(undefined));  // true(undefinedは数値ではない)
console.log(isNaN(true));  // false, true は数値 1 に変換される
console.log(isNaN(false)); // false, false は数値 0 に変換される

注意しないといけないのは、文字列’123’やtrue,falseが数値として評価される点です。

厳密にチェックするにはNumber()をつけます。

console.log(Number.isNaN(123));        // false(123は数値)
console.log(Number.isNaN('123'));      // false('123'は数値ではない)
console.log(Number.isNaN('hello'));    // false('hello'は数値ではない)
console.log(Number.isNaN(NaN));        // true(NaNは数値ではない)
console.log(Number.isNaN(undefined));  // false(undefinedは数値ではない)
console.log(Number.isNaN(true));  // false, true は数値 1 ではないため
console.log(Number.isNaN(false)); // false, false は数値 0 ではないため

日付にまつわるjavascript

getFullYear()

年を取得

new Date().getFullYear()//2024(現在の年)

getMonth()

月を取得

ここで注意しないといけないのが、getMonth()は0からカウントしているということ。

今は3月だから3と出ると思いきやゼロから数えるので2が出ます。

new Date().getMonth()//2(現在の月)

getDate()

日にちを取得

new Date().getDate()//14(現在の日にち)

getHours()

時間を取得

new Date().getHours()//22(現在の時間)

getMinutes()

分を取得

new Date().getMinutes()//11(現在の分)

getDay()

曜日を取得

const date = new Date();
const dayOfWeek = date.getDay();(現在の曜日)

// 曜日を表す文字列に変換する
const days = ['日', '月', '火', '水', '木', '金', '土'];
const dayString = days[dayOfWeek];

console.log("今日は" + dayString + "曜日です。");

getTime()

Unix Timestamp

全世界で基準とされる時間UTC(1970/01/01 00:00:00)

new Date().getTime()//1710641455949

UTCからの経過ミリ秒を表します。

うるう年

下のように書くと2月の末日を取得することができます。

new Date(2024,2,0).toLocaleDateString()//2024/2/29

年度

4月から年度が始まって3月に終わる年度の表示

let d = new Date();
let year = d.getFullYear();
let month = d.getMonth() + 1; // getMonth() は0から始まるので+1する

let fiscalYear;
if (month < 4) {
    fiscalYear = year - 1;
} else {
    fiscalYear = year;
}

console.log(fiscalYear + "年度");

Dateオブジェクトを変更する方法は以下の通りです。

let d = new Date();
d.setMonth(d.getMonth() - 3);
const n = d.getFullYear();
console.log( n + "年度")//2023年度

おまけ

日にちを設定するにはnew Date()のカッコの中に設定したい日付を入れるのですが、ここでちょっとした豆知識

new Date(2024,3,14).toLocaleDateString()

こうすると

2024/4/14

こうでて

new Date("2024-3-14").toLocaleDateString()

こう書けば

2024/3/14

こうなります。文字列として渡せば書いた日を設定できます。

使ってみてください。

それでは。