うるう年もあれば、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
こうなります。文字列として渡せば書いた日を設定できます。
使ってみてください。
それでは。