작성
·
827
·
수정됨
0
왼쪽은 엣지 inprivate, 오른쪽은 크롬 시크릿 모드 브라우저입니다.
서로의 채팅 입력 시간이 9시간 전으로 표시되고 있습니다.
실제로 서버의 createdAt은 한국 표준시라고는 되어있지만 실제 시간보다 9시간 느린 시간이 저장되었고
entities/channelChats.ts의 설정 내용은 강사님의 깃헙 내용과 동일했습니다.
aws - rds에서 확인해본 DB도
지역이 ap-northeast-2a, 서울로 잘 지정되어 있었습니다.
혹시 작업 중에 이런 경우 보신 적 있으신가요?
어디를 더 살펴봐야 서버에 제대로 된 현재 시간이 저장될 수 있을지 조언 부탁드립니다.
답변 1
0
utc로 현재시간을 저장해야 하는데 한국시간으로 저장돼서 9시간 차이가 나네요.
서버와 DB의 타임존을 확인해야 합니다. 혹시 임의로 서울 시간으로 수정하신 게 있으신가요?
서버에서 node를 입력하고 new Date() 쳐서 나오는 시간을 확인해보세요.
부분적으로 해결한것 같습니다...
인터넷에 검색해보니 ormconfig.json 아니면 app.module.ts에서 timezone 옵션을 넣어줄 수 있다는걸 확인했고
저는 ormconfig.json이 없어서 app.module.ts에서 아래처럼 timezone 옵션 넣어줬습니다
TypeOrmModule.forRoot({
timezone: 'Asia/Seoul',
}),
브라우저에서 채팅을 보낸 시간이 제대로 찍히는데
DB에서는 여전히 9시간 전으로 저장되었네요
저는 DB는 nestjs가 typeorm 통해서 전송한 데이터를 고스란히 저장만 할거라고 생각했는데 아닌걸까요?
DB에도 타임존 설정이 필요한걸까요?
AWS RDS에서 설정할 수 있는 타임존에는 SYSTEM이 없어서 'Asia/Seoul'로 설정하였습니다
DB 타임존, 시간 변경 확인하였고
이후 테스트 해보니 이번에는 DB에는 현재 시간이 저장되나
브라우저에서 상대방의 채팅 입력 시간이 9시간 빠르게 표시되었습니다.
다시 app.module.ts에서 TypeOrmModule의 timezone: 'Asia/Seoul' 옵션 제거하였고
브라우저 DB 모두 정상적으로 시간 나오는 것 확인했습니다..
문제 해결은 했지만 어째서 이런 현상이 발생하는지 이해가 가지 않습니다
express+sequelize와 동일한 RDS 인스턴스 사용할때는 잘못된 시간이 저장되는 일은 없었거든요
왜 이런걸까요.. 혹시 nest typeorm 사용하시던 중에 이런 비슷한 상황 보신 적은 없으신가요
저도 처음 보는 현상이네요. DB의 타임존이 Asia/Seoul이라서 typeorm의 타임존을 Asia/Seoul로 맞춰준 적은 있는데, 반대로 typeorm의 타임존 Asia/Seoul을 제거한 건 처음 봅니다.
아뇨 제가 사전에 시간을 설정했던 적은 없습니다.
서버의 타임존은 Asia/Seoul이며 new Date()의 결과는 아래와 같습니다.
DB의 타임존이 UTC이고 실제 시간보다 9시간 느리네요
DB는 nestjs가 typeorm 통해서 전달하는 데이터를 저장만 하니까,
nestjs에서 타임존 아니면 시간을 설정해주면 해결될 것 같은데.. 맞을까요?