0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

JavaScriptでカレンダーを出力するプログラムを作成する

Last updated at Posted at 2024-10-27

はじめに

前回、Rubyで表題と同じ内容のプログラムを作成しましたが、JavaScriptでも書いてみたのでメモ書きとして残しておくことにします。

参考:Rubyでカレンダーを表示するプログラムを作成する

アウトプット

ターミナルで、対象のディレクトリにてnode calender.js -m ${1-12}と実行すると、対象月のカレンダーを表示することができました。

スクリーンショット 2024-10-27 17.28.25.png

なお、前回(Rubyのコード)からの変更点は以下の通りです。

  • すべて日本語で表示(前回:すべて英語)
  • カレンダーは日曜始まり(前回:月曜始まり)

コード

コード作成時の考え方や詳細な説明は、前回(Rubyのコード)の記事で解説しているため割愛します。

JavaScript特有の重要な点については、以下にまとめておきます。

calendar.js
const showCalendar = (month) => {
	let startDate = new Date(2024, month - 1, 1);
	let endDate = new Date(2024, month, 0);

	process.stdout.write(`    ${month}月 2024年    \n`);
	process.stdout.write('日 月 火 水 木 金 土\n');

	let weekdayIndex = startDate.getDay();
	let spaces = '   '.repeat(weekdayIndex);
	process.stdout.write(`${spaces}`);

	for (let day = startDate.getDate(); day <= endDate.getDate(); day++) {
		let tempDate = new Date(2024, month - 1, day);
		process.stdout.write(day.toString().padStart(2, ' ') + ' ');

		if (tempDate.getDay() === 6) {
			process.stdout.write('\n');
		}
	}
	process.stdout.write('\n');
};

let selectedMonth = new Date().getMonth() + 1;

let args = process.argv.slice(2);
let monthArgIndex = args.indexOf('-m');

if (monthArgIndex !== -1 && args[monthArgIndex + 1]) {
	selectedMonth = parseInt(args[monthArgIndex + 1], 10);
}

if (selectedMonth < 1 || selectedMonth > 12) {
	console.log(`${selectedMonth} is neither a month number (1..12) nor a name`);
} else {
	showCalendar(selectedMonth);
}

  • let startDate = new Date(2024, month - 1, 1);
    • Dateオブジェクトが月を0から11で扱うため、-1とする
  • process.stdout.write
    • 改行のタイミングを任意に調整したいため、上記メソッドを利用する

おわりに

今回の気づきとしては、前回はRubyで本プログラムを作成しましたがJavaScriptで作成しても基本的なプログラム作成時の考え方は同じで書き方が微妙に異なるだけでした。

ただ、それぞれの書き方を正確に把握していなかったため、混乱し少々作成に時間がかかってしまいました。

引き続き学習を続けていきます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?