모니터링 시스템을 개발하면서 외부로부터 센서 데이터의 시간을 문자열로 받아오고 있다.
이 문자열은 ISO 8601방식으로 되어있다.
여기서 ISO 8601 방식이란?
가운데 T를 통해 날짜와 시간을 구분해주는 시간 표현 방식은 일반적으로 "ISO 8601" 형식이라고 불린다. ISO 8601은 국제 표준화 기구(ISO)에서 정한 날짜와 시간 표기법으로, 날짜와 시간을 연속된 문자열로 표현하는 방법이다.
받아오고 있는 시간 문자열 데이터
2023-03-30T14:37:39.165926
나는 이 데이터를 우리에게 익숙 한 시간 표현 방식인 '2023-03-30 14:37'와 같은 형식으로바꿔야 한다.
결론적으로 나는 코드를 다음과 같이 구성했다.
const create_datetime = "2023-03-30T14:37:39.165926";
const date = new Date(create_datetime);
const year = date.getFullYear();
const month = String(date.getMonth() + 1).padStart(2, "0");
const day = String(date.getDate()).padStart(2, "0");
const hours = String(date.getHours()).padStart(2, "0");
const minutes = String(date.getMinutes()).padStart(2, "0");
const formattedDate = `${year}-${month}-${day} ${hours}:${minutes}`;
// console.log(formattedDate) ===> 2023-03-30 14:37
1. const date = new Date(create_datetime);
create_datetime 변수에 저장된 문자열을 Date 객체로 생성한다.
date를 출력해보면 아래와 같이 자바스크립트만의 표현법으로 바뀐 것을 알 수 있다.
Thu Mar 30 2023 14:37:39 GMT+0900 (한국 표준시)
2. date 시간 객체에서 자바스크립트에서 제공하는 시간 추출 함수들을 써서 표현하고 싶은 년, 월, 일, 시간, 분, 초를 추출해낸 후 입맛에 맞게 바꿔주면 된다.
const year = date.getFullYear(); : Date 객체에서 연도 정보를 추출하여 year 변수에 저장.
const month = String(date.getMonth() + 1).padStart(2, "0"); : Date 객체에서 월 정보를 추출하여 month 변수에 저장.
- getMonth() 메소드는 0부터 11까지의 값을 반환하므로, 결과에 1을 더하여 실제 월 값을 구한다.
- padStart() 메소드를 사용하여 문자열 길이를 2로 맞추고, 남은 자리에는 "0" 문자를 채운다.
(ex : 2023-3-1 => 2023-03-03)
<유의사항>
getMonth : 0~11 반환
getDay : 1~31 반환
getHours : 0~23 반환
getMinutes : 0~59 반환
getSeconds : 0~59 반환
Day를 제외하고는 각 결과값에 +1를 더해줘야 한다.
'개발 저장소 > 개발 지식 저장소' 카테고리의 다른 글
[DB] Oracle 새로운 아이디 생성 시 'ORA-65096: 공통 사용자 또는 롤 이름이 부적합합니다.' 에러 해결 방법 (0) | 2023.04.15 |
---|---|
[Python] PDF417, DataMatrix, QR코드, 바코드 스캔 (0) | 2023.04.13 |
[Javascript] for (let i=0; i < data.length; i++) 반복문 실행 속도 향상 방법 (0) | 2023.03.25 |
[Chat.GPT] 항상 어려운 CSS. Chat.GPT로 해결하자 (0) | 2023.03.07 |
[React.js, 리액트] 자식 컴포넌트에서 부모 컴포넌트로 데이터 전달하기 (0) | 2023.02.24 |