小ネタですが数か月ぶりに記事を書いてみます。
var day = '日月火水木金土'[new Date().getDay()];
console.log('今日は' + day + '曜日');
— 高梨ギンペイ (@ginpei_jp) July 31, 2015
解説
曜日情報の取得
現在日時の情報を new Date()
で取得します。 var now = new Date();
と書いた方がわかりやすいかもしれない。
で、その現在日時情報が格納されたDateオブジェクト now
のメソッド .getDay()
で曜日の取得です。ただし戻り値は数値で、 0
なら日曜日、以下月火水……と続きます。
.getDay() |
曜日 |
---|---|
0 |
日曜日 |
1 |
月曜日 |
2 |
火曜日 |
3 |
水曜日 |
4 |
木曜日 |
5 |
金曜日 |
6 |
土曜日 |
if
文でやれない事もないですが、せっかく数値が連続しているので、配列の添え字として使うと良いです。
曜日の名前を得る
というわけで、配列で用意します。これを先程取得した曜日情報と組み合わせて、現在の曜日を得られます。
var dayNames = [ '日曜日', '月曜日', '火曜日', '水曜日', '木曜日', '金曜日', '土曜日' ]; console.log(dayNames[1]); // => "月曜日" var now = new Date(); var day = now.getDay(); var dayName = dayNames[day]; console.log(dayName); // => "月曜日" 等
一文字なら文字列でも良い
C言語とかやってると理解が早いんですが、配列と同様、文字列も添え字で内容を得られます。
var ginpei = 'ginpei'; console.log(ginpei[0]); // => "g" console.log(ginpei[1]); // => "i" console.log(ginpei[2]); // => "n"
この仕組みを使って曜日の一文字を得る事もできるというわけです。
var now = new Date(); var dayNames = '日月火水木金土'; var day = now.getDay(); var dayName = dayNames[day]; console.log(dayName + '曜日'); // => "月曜日" 等
でもって変数代入を省略して一行にまとめて、こうなると。
var dayName = '日月火水木金土'[new Date().getDay()]; console.log(dayName + '曜日'); // => "月曜日" 等
複数文字の場合
ついでに英語表記とか、一文字にならない場合は添え字としてアクセスするんでなくて .substr()
あたり使ってやれない事もないかと思います。
var dayName = 'SunMonTueWedThuFriSat'.substr(new Date().getDay() * 3, 3); console.log(dayName); // => "Mon" 等
月の名前(Jan, Feb, …)なんかにも応用できる。
いやしかしまあ、これだったら空白 " "
区切りで書いて .split(' ')
してから添え字アクセスの方が汎用性高そうだ。
おねがい
可読性低いから多用は避けておくれね。