일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- Component
- til
- 프리온보딩
- 자바스크립트
- es6
- JS
- 알고리즘
- JavaScript
- 원티드
- Reducer
- array
- Redux
- 파이어베이스
- 컴포넌트
- state
- react
- 프론트엔드
- axios
- 비트 연산자
- TypeScript
- Frontend
- 브라우저
- v9
- CORS
- 리액트
- firebase
- 타입스크립트
- localstorage
- 프로그래머스
- react localStorage
- Today
- Total
도리쓰에러쓰
[JavaScript] 밀리초 일, 시, 분, 초 계산하기 (D-day 기능 구현) 본문
D-day 기능을 구현하면서 밀리초 계산이 헷갈렸다.
우선 변수 setDate와 변수 nowDate를 new Date() 객체를 통해 날짜 데이터를 저장하고,
const setDate = new Date("2022-09-25T00:00:00+0900");
const nowDate = new Date();
아래 코드를 통해 계산할 날의 밀리초를 변수 distance에 넣었다.
const distance = setDate.getTime() - nowDate.getTime();
이제 밀리초를 어떻게 일, 시, 분, 초로 표현할까?
우선 계산 방법은 아래와 같다.
계산할 날의 밀리초 / (1000 * 60 * 60 * 24) = 일
(계산할 날의 밀리초 / (1000 * 60 * 60)) % 24 = 시
(계산할 날의 밀리초 / (1000 * 60)) % 60 = 분
(계산할 날의 밀리초 / 1000) % 60 = 초
* 1000ms는 1초이다.
1000 = 1초
1000 * 60 = 1분
1000 * 60 * 60 = 1시간
1000 * 60 * 60 * 24 = 1일
1️⃣ 일 계산
1000 * 60 * 60 * 24는 1일(86,400,000)이다.
밀리초를 1일(86,400,000)로 나눴으니 일 단위로 계산이 될 것이다.
2️⃣ 시 계산
1000 * 60 * 60은 1시간(3,600,000)이다.
밀리초를 1시간(3,600,000)으로 나눴으니 시간 단위로 계산이 되고,
24로 나눈 나머지를 구하면 24를 넘지 않는 시 단위가 계산이 될 것이다.
3️⃣ 분 계산
1000 * 60은 1분(60,000)이다.
밀리초를 1분(60,000)으로 나눴으니 분 단위로 계산이 되고,
60을 나눈 나머지를 구하면 60을 넘지 않는 분 단위가 계산이 될 것이다.
4️⃣ 초 계산
1000은 1초이다.
밀리초를 1초(1,000)으로 나눴으니 초 단위로 계산이 되고,
60을 나눈 나머지를 구하면 60을 넘지 않는 초 단위가 계산이 될 것이다.
따라서, 아래와 같이 작성하면 D-day 기능을 구현할 수 있다.
const day = String(Math.floor(distance / (1000 * 60 * 60 * 24))).padStart(3, "0");
const hours = String(Math.floor((distance / (1000 * 60 * 60)) % 24)).padStart(2, "0");
const minutes = String(Math.floor((distance / (1000 * 60)) % 60)).padStart(2, "0");
const seconds = String(Math.floor((distance / 1000) % 60)).padStart(2, "0");
- padStart(문자열 길이, "문자")
* padStart(3, "0") : 문자열 길이가 3 미만이면 문자열 길이가 3이 될 때까지 앞에 "0"으로 채운다.
'JavaScript > JS' 카테고리의 다른 글
[JavaScript] this란? (0) | 2022.08.05 |
---|---|
[JavaScript] 주로 사용하는 문자열 메서드 모음 (String Method Collection) (0) | 2022.03.23 |
[JavaScript] 주로 사용하는 배열 메서드 모음 (Array Method Collection) (0) | 2022.03.10 |
[JavaScript] 배열 중복 원소 제거해주는 Set 객체 (0) | 2022.03.07 |
[JavaScript] ES6에 추가된 객체 리터럴 기능 3가지 (0) | 2022.03.04 |