[JS] Date 날짜 알고 다루자

imura·2023년 5월 29일
0

JS

목록 보기
3/3

간단 프로젝트를 진행할때는 YYYY-MM-DD HH:mm:ss 로 만들어서 작업을 했었는데 이제 타부서랑 함께 협업을 하다보니 날짜 형식이 제각각인걸 보게 되었다
유닉스타임은 뭐고 ISO는 뭔지 모르는 날 발견해버렸다 바보...

서론

UTC 협정세계시

  • 한국은 UTC로부터 +9시간을 해준다

UNIX time

  • UTC로부터 경과한 시간을 초로 나타낸다

ISO 8601 형식

  • YYYY-MM-DDTHH:mm:ss.sssZ

본론

자바스크립트 Date 살펴보기

const now = new Date()
console.log(now) // new Date() 2023-05-29T11:56:58.293Z
console.log(now.toISOString()) // 2023-05-29T11:56:58.293Z
console.log('now.toString()) // Mon May 29 2023 20:56:58 GMT+0900 (Korean Standard Time)
console.log(now.getTimezoneOffset() / 60) // -9H (UTC 시간이 현재 로컬시간보다 9시간이 느리다)

const testNow1 = new Date().getTime() // 인스턴스 생성
const testNow2 = Date.now() // 인스턴스 생성 없이 메서드 사용
console.log(testNow1, Math.floor(testNow1 / 1000)) // 밀리초 : 1685361418301, 초 : 1685361418
console.log(testNow2, Math.floor(testNow2 / 1000)) // 밀리초 : 1685361418301, 초 : 1685361418


const now2 = new Date()
console.log('utcNow', now2) // utcNow 2023-05-29T11:56:58.301Z

const unixTime = Math.floor(now2 / 1000)
console.log('unixTime', unixTime) // unixTime 1685361418


// 한국 시간을 얻기위해서는 밀리초 기준인 시간에다가 9시간을 더해줘서 설정한다
const localNow = now2.setTime(now2.getTime() + 9 * 60 * 60 * 1000)
console.log('localUnixTime', Math.floor(now.getTime() / 1000)) // localUnixTime 1685393818
console.log('localNow', new Date(localNow)) // localISOTime 2023-05-29T20:56:58.301Z
  1. new Date() + .toISOString()
    -> ISO 형식으로 UTC 결과값을 표현한다
  1. new Date().toString()
    -> 현재 로컬 시간대 기준으로 표현한다

  2. new Date().getTimezoneOffset()
    -> 현재 로컬 시간이 UTC 기준으로 몇분이 차이나는지 표현한다
    -> 분(m)으로 얻기 때문에 시간으로 얻기 위해서 60으로 나눠주면 시간(H)으로 얻을 수 있다

  3. new Date().getTime() / Date.now()
    -> UTC로부터 경과한 시간을 밀리초로 표현한다
    -> 유닉스 타임 얻기 : 위에서 얻은 밀리초를 1000으로 나누면 얻을 수 있다

  1. .setTime(.getTime()+9시간)
    -> UTC 시간을 현재 한국시간 로컬타임으로 맞춰주기 위해 9시간을 더해주면 얻을 수 있다

결론

유닉스타임은 Date 객체의 시간을 1000으로 나눈 것 이다
ISO 형식은 Date 객체 그대로의 형식과 같다 (T와 Z가 보인다면 ISO)
자바스크립트에서의 날짜 다루기는 이해한거같은데 MySQL에서 datetime과 timestamp가 헷갈려서 이부분은 추후 더 알아보고 포스팅 해야겠다


참고 사이트

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Date/Date

0개의 댓글