남은 일수를 년, 월, 일로 변환 [중복]

Dec 14 2020

두 날짜 (생일과 생일까지 남은 시간을 얻기 위해 현재 날짜)의 차이를 얻으려고하지만 ( '년 / 월 / 일) 출력 형식을 원합니다. 어떻게 할 수 있습니까? 그것이 내가 지금까지 시도한 것입니다.

 const birthday = new Date ('11-20-2021').getTime();
 const today = new Date ().getTime();
 const dys = (1000*60*60*24);
 const months = (dys*30);
 let differance = birthday-today ; 
 const formatted = Math.round(differance/dys);
 console.log(formatted);`

미리 감사드립니다

답변

AirSquid Dec 14 2020 at 00:06

모듈로 연산자에 대해 어떻게 생각하십니까? :)

이것은 변화를 찾는 것과 같은 일반적인 수학 연산입니다. 이렇게 생각해보세요. 397 일과 같이 많은 일이 있다면 정수 나눗셈 (1)을 수행하여 년 수를 얻을 수 있습니다. 그러면 1 년 단위로 모듈로를 수행하여 남은 일 수를 얻을 수 있습니다. 나머지 (일) 397 % 365 = 32. 그런 다음이 프로세스를 반복하여 남은 개월 수 (1 ... 30 일 월 가정)를 얻을 수 있으며, 나머지 일수 2를 얻기 위해 모듈로를 반복 할 수 있습니다.

나는 자바 스크립트 전문가는 아니지만 정수 형식으로 나누기 결과를 얻으려면 Math.floor (quotient)를 사용해야한다고 생각합니다.

nabil497 Dec 14 2020 at 00:07

이 예제는 현재 날짜와 2100/0/14 날짜를 비교하여 예제에서 동일한 개념을 시도하고 도움이 되었기를 바랍니다.

var today, someday, text;
today = new Date();
someday = new Date();
someday.setFullYear(2100, 0, 14);

if (someday > today) {
  text = "Today is before January 14, 2100.";
} else {
  text = "Today is after January 14, 2100.";
}
document.getElementById("demo").innerHTML = text;
dpwrussell Dec 14 2020 at 00:21

날짜와 차이로 작업하는 것은 많은 엣지 케이스가 있기 때문에 어려울 수 있습니다. 그래서 저는 전용 라이브러리가 이것을 처리하도록하는 것을 선호합니다.https://momentjs.com/

순간에는 플러그인이 있습니다 (https://www.npmjs.com/package/moment-precise-range-plugin) 원하는 것을 정확하게 수행합니다.

import moment from 'moment';
import 'moment-precise-range-plugin';

var m1 = moment('2014-01-01 12:00:00','YYYY-MM-DD HH:mm:ss');
var m2 = moment('2014-02-03 15:04:05','YYYY-MM-DD HH:mm:ss');
var diff = moment.preciseDiff(m1, m2, true); // {years : 0, months : 1, days : 2, hours : 3, minutes : 4, seconds : 5}
var str = `Years: ${diff.years}, Months: ${diff.months}, Days: ${diff.days} `; // 'Years: 0, Months: 1, Days: 2'