[まず作ったJS]記念日電卓


🗓 記念日計算機


Dateオブジェクト


Dateオブジェクトは処理日のオブジェクトです.使える方法が多いので試してみましょう.
// 1. Date 객체 생성
var now = new Date();

// 2. 연도를 가져오는 메소드 .getFullYear()
console.log(now.getFullYear());

// 3. 월 정보를 가져오는 메소드 .getMonth() {0: 1월, 1: 2월, ... 10: 11월, 11: 12월}
console.log(now.getMonth());

// 4. 일 정보를 가져오는 메소드 .getDate()
console.log(now.getDate());

// 5. 1970년 1월 1일 00:00:00을 기준으로 흐른 시간을 밀리초로 표시하는 메서드 .getTime()
console.log(now.getTime());

// 6. 특정일의 Date 객체 생성
var today = new Date('2022-04-15');
console.log(today);

// 7. 특정 ms의 Date 객체 생성
var ms = new Date(1000);
console.log(ms);

実装の開始


まず、記念日を計算するためには、起点となる特定の日付を指定しなければならない.前述したように、特定日オブジェクト作成方法に従って開始日を指定した後、時間をgetTimeで計算します.현재 시간 - 시작 시간を計算すればいいです.
ただし、このように計算すると、日数は計算されずms単位で出力されます.日数のみを確認するために1000ms * 60s * 60m * 24hに分割し、Math.floor関数を用いて整数処理を行う.Math.floorは、与えられた数と等しいまたは小さい整数の中で最大の数を返します.
注意すべき点は、通常開始日が1日なので、除算した値に+1を加算することです.
var now = new Date();
var start = new Date('2020-06-30');

var timeDiff = now.getTime() - start.getTime();
var day = Math.floor(timeDiff / (1000 * 60 * 60 * 24) + 1);
$('#love').text(day + '일째');

今日が何日目かを確認すれば、特定の日付までどれだけ残っているかを計算します.
記念日も上記と同じように、特定の日付を指定して、今日からどれくらい残っているかを計算します.
var now = new Date();
var start = new Date('2020-06-30');

var timeDiff = now.getTime() - start.getTime();
var day = Math.floor(timeDiff / (1000 * 60 * 60 * 24) + 1);
$('#love').text(day + '일째');

var valentine = new Date('2023-02-14');
var timeDiff2 = valentine.getTime() - now.getTime();
var day2 = Math.floor(timeDiff2 / (1000 * 60 * 60 * 24) + 1);
$('#valentine').text(day2 + '일 남음');

では、いつn番なのか、どうやって知るのでしょうか.
1000일의 ms = 시작일.getTime() + 999일.getTime()
1000일 = new Date(1000일의 ms)
そう計算できます.thousandにmsで計算された1000日間のms作成オブジェクトを加えた後、年から日付まで順次解き、いつ1000日間であるかを計算します.
var thousand = new Date(start.getTime() + 999 * (1000 * 60 * 60 * 24));
var thousandDate = thousand.getFullYear() + '.' + (thousand.getMonth()+1) + '.' + thousand.getDate();
$('#thousand-date').text(thousandDate);

何日か確認しましたが、1000日が残っているか計算できます.
var thousand = new Date(start.getTime() + 999 * (1000 * 60 * 60 * 24));
var thousandDate = thousand.getFullYear() + '.' + (thousand.getMonth()+1) + '.' + thousand.getDate();
$('#thousand-date').text(thousandDate);

var timeDiff3 = thousand.getTime() - now.getTime();
var day3 = Math.floor(timeDiff3 / (1000 * 60 * 60 * 24) + 1);
$('#thousand').text(day3 + '일 남음');