🐣 カレンダーから日付を取得して現在の時間との差を表示する処理
作成日: 2021/05/08
0

~~~HTML~~~
↓↓↓↓↓↓↓↓↓↓↓↓

<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>あと何日?</title>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.10.6/moment.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.10.6/locale/ja.js"></script>
  </head>

  <body>

    <input type="date" value="" id="dateSet" />
    <input type="button" value="検索" id="dateSearch" />
    <p id="diffTime"></p>

    <script src="./main.js"></script>
  </body>
</html>

~~~javascript~~~
↓↓↓↓↓↓↓↓↓↓↓↓

const dateSet = document.getElementById("dateSet");
const dateSearch = document.getElementById("dateSearch");
const diffTime = document.getElementById("diffTime");
// diffTimeを非表示にしている。
diffTime.style.display = "none";

const func2 = function () {
  // 現在の時間を取得
  let nowtime3 = moment();
  //カレンダーから日付をmoment.jsで使用出来るように取得
  const dateSetValue = moment(dateSet.value);
  //現在の時間とカレンダーから取得した日付の差を秒単位で取得する。
  const num2 = dateSetValue.diff(nowtime3, "seconds");
  //   取得した時間を日,時間,分,秒で表示するように変換
  let timeD = Math.floor(num2 / (24 * 60 * 60));
  let timeH = Math.floor((num2 % (24 * 60 * 60)) / (60 * 60));
  let timeM = Math.floor(((num2 % (24 * 60 * 60)) % (60 * 60)) / 60);
  let timeS = ((num2 % (24 * 60 * 60)) % (60 * 60)) % 60;
  let timeDHMS = timeD + "日" + timeH + "時間" + timeM + "分" + timeS + "秒";
  // 変換した時間を書き込む。
  diffTime.innerHTML = dateSet.value + "まで後" + timeDHMS;
};

// 検索ボタンを押した時にdiffTimeが表示されるようにする。
dateSearch.addEventListener("click", () => {
  diffTime.style.display = "block";
});
// 時間の計算を1秒ごとに行う処理
setInterval(func2, 1000);