Skip to content

Latest commit

 

History

History
43 lines (31 loc) · 3.17 KB

230118_JavaScript.md

File metadata and controls

43 lines (31 loc) · 3.17 KB

Javascript time format 변환하기

  • 조회 API를 만드는 중, response에 created_at 칼럼이 추가되었고, 정해진 시간 형식이 있었다! => 2023-01-15T13:10:38
  • 우선 DB에 저장되는 데이터의 형태(UTC 기준으로 저장하고 가져올 때 typeORM으로 시간차 보완) ㅇㅇㅇㅇㅇ

첫 번째 시도(실패).

  • TypeORM을 이용해 DB에 저장되는 포맷을 바꾸기

    • entity에 @transform 데코레이터를 이용해 포맷바꾸기(실패)

    • column의 type option에 timestamp without time zone, timestamptz 등 설정하기(실패)

      • Z로 표기되는 줄루시간을 없애고 싶어 이것저것 시도해보았지만, MySQL이 timestamp 외에는 옵션 지원하지 않음
    • 무엇보다 DB 저장 포맷 자체를 바꾸려고 하는 것은 좋지 못한 방법이었다.

      • 첫번째 이유) Date 형식으로 저장되고 있는데, 포맷을 바꾸려면 String 타입으로 변환해야하고 그렇게되면 Javascript에서 기본적으로 제공하는 시간 관련 기능들을 이용하지 못함
      • 두번째 이유) 만약 이후에 response 케이스가 추가되어 time format을 또 바꿔야한다면 매우 비효율적인 상황이 됨
      • 결론) DB에는 raw data 그대로 저장하고 상황에 맞게 가공해서 쓰자!

두 번째 시도(성공).

  • 코드 단에서 time format 가공하기

    • created_at: c.t_created_at.toString().split('.')[0](실패) 실패리스폰스

    • created_at: c.t_created_at.toISOString().split('.')[0](성공) 성공리스폰스

  • toString()toISOString() 은 어떤 차이가 있길래? 🧐

    • toString() 을 쓰면서 British Summer Time 형식으로 변환되었고 split('.') 메소드에 영향을 받지 않았음(time format에 .이 없음)
    • toISOString() 을 쓰면 ISO시간 형식의 문자열로 변환되고 split('.') 메소드로 줄루시간 제거 가능
  • javascript Date 객체에는 기본적으로 제공하는 7개의 날짜 지정 형식이 있음.

    • JavaScript에서 코드 한 줄로 날짜 형식 지정하기
      • toString() - **Fri Jul 02 2021 14:03:54 GMT+0100 (British Summer Time)**을 반환합니다
      • toDateString() - Fri Jul 02 2021을 반환합니다
      • toLocaleString() - 7/2/2021, 2:05:07 PM을 반환합니다
      • toLocaleDateString() - 7/2/2021을 반환합니다
      • toGMTString() - Fri, 02 Jul 2021 13:06:02 GMT을 반환합니다
      • toUTCString() - Fri, 02 Jul 2021 13:06:28 GMT을 반환합니다
      • toISOString() - 2021-07-02T13:06:53.422Z을 반환합니다