あまブログ

ドキドキ......ドキドキ2択クイ〜〜〜〜〜〜〜ズ!!

【Node.js】カレンダーのプログラムを作る

以下のカレンダーのプログラムをJavaScriptで、nodejsで実行するコマンドラインのプログラムとして作り直します。

ama-tech.hatenablog.com

1. 環境

  • macOS:13.0.1
  • node:v18.12.1

2. ソースコード

#!/usr/bin/env node

const argv = require("minimist")(process.argv.slice(2));
const today = new Date();
const month = argv.m || today.getMonth() + 1;
const year = argv.y || today.getFullYear();
const startOfMonth = new Date(year, month - 1);
const endOfMonth = new Date(year, month, 0);

console.log(`      ${month}${year}`);
console.log("日 月 火 水 木 金 土");
process.stdout.write(" ".repeat(startOfMonth.getDay() * 3));
for (const d = startOfMonth; d <= endOfMonth; d.setDate(d.getDate() + 1)) {
  let day = String(d.getDate()).padStart(2, " ");
  const color_reverse = "\x1b[7m";
  const color_reset = "\x1b[0m";
  if (
    d.getFullYear() == today.getFullYear() &&
    d.getMonth() == today.getMonth() &&
    d.getDate() == today.getDate()
  ) {
    day = `${color_reverse}${day}${color_reset}`;
  }
  process.stdout.write(`${day} `);
  if (d.getDay() == 6) {
    process.stdout.write("\n");
  }
}
process.stdout.write("\n\n");

【参考】