프로그래밍/웹 관련

[javascript] 날짜 문자열 만들기

채윤아빠 2022. 8. 2. 14:20
728x90
반응형

자바스크립트로 날짜 문자열을 "YYYY-MM-DD hh:mm:ss" 형식으로 만드는 방법을 정리해 둡니다.


"Date" 클래스의 getFullYear(), getMonth, getDate()

가장 쉬운방법으로 "Date" 클래스의 getFullYear(), getMonth, getDate() 함수를 이용하면 다음과 같이 "YYYY-MM-DD" 문자열을 만들 수 있습니다.

let current_date = new Date()
let current_date_string = current_date.getFullYear() + '-' 
    + (current_date.getMonth() + 1) + '-' + current_date.getDate()
// Result
// 2022-8-2

위와 같이 수행하면 10이하의 숫자인 경우, 위와 같이 한자리로 출력이 되어서 "YYYY-MM-DD" 형식에 맞지 않게 됩니다.

2자리수로 맞추가 위해 padStart() 함수를 적용하면 됩니다.

let current_date = new Date()
let current_date_string = current_date.getFullYear() + '-' 
    + (current_date.getMonth() + 1).toString().padStart(2, '0') + '-' + current_date.getDate().toString().padStart(2, '0')
// Result
// 2022-08-02

백틱(back-tick) 템플릿 문자열로 한다면 조금 더 보기가 편합니다.

let current_date = new Date()
let year = current_date.getFullYear()
let month = (current_date.getMonth() + 1).toString().padStart(2, '0')
let day = current_date.getDate().toString().padStart(2, '0')
let current_date_string = `${year}-${month}-${day}`
// Result
// 2022-08-02

"Date" 클래스의 toISOString()

"Date" 클래스의 getFullYear(), getMonth, getDate() 함수들을 이용하면 조금은 복잡합니다.

"Date" 클래스의 toISOString()의 실행결과 다음과 같습니다.

(new Date()).toISOString()
//'2022-08-02T07:33:29.242Z'

toISOString() 출력 형식은 "YYYY-MM-DD hh:mm:ss.zzzZ"와 같습니다. 이 결과를 substring() 함수를 이용하여 필요한 부분만 잘라내면 훨씬 손쉽게 날짜문자열을 얻을 수 있습니다.

한 가지 주의할 점은 toISOString()으로 출력되는 시각은 UTC 시각이기 때문에 한국 시각으로 변경하기 위하여 9시간을 더해 주어야 합니다.

let current_time = new Date(+new Date() + (9 * 3600000)).toISOString().substring(0, 19)
// Result
// '2022-08-02T16:32:55'

참고자료