웹 프로그램에서 사용자에게 보여지는 시간을 PST 표준시로 보여주고자 한다. 이를 구현하기 위하여 아래와 같은 방법을 사용하였다.
❶ 서버는 시간 정보를 협정 세계시(UTC, Coordinated Universal Time) 로 ISO-8601 (Date elements and interchange formats - Information interchange - Representation of dates and times) 국제 표준 날짜 표기 기준을 사용하여 클라이언트에 데이터를 전달하고 ❷ 클라이언트는 UTC 데이터를 사용하여 원하는 시간대의 형태로 변경하여 보여준다.
Spring 기반의 서버 프로그램은 데이터를 JSON 형식으로 전달하며 객체의 Date 타입 필드값에 대하여 어노테이션을 사용하여 ISO-8601 형식으로 변환되도록 하였다.
UTC 기준 시간 변환을 위하여 "yyyy-MM-dd'T'hh:mm:ss.SSS+00:00" 패턴 값을 사용하였다.
class OpenRsc implements Serializable{ int rsc_id; String title; String description; int viewCount; String linkId; String creationUser; @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'hh:mm:ss.SSS+00:00" ) Date creationDate; String modifiedUser; @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'hh:mm:ss.SSS+00:00" ) Date modifiedDate; public OpenRsc(int rsc_id, String title, String description, int viewCount, String linkId, String creationUser, Date creationDate, String modifiedUser, Date modifiedDate ) { super(); this.rsc_id = rsc_id; this.title = title; this.description = description; this.viewCount = viewCount; this.linkId = linkId; this.creationUser = creationUser; this.creationDate = creationDate; this.modifiedUser = modifiedUser; this.modifiedDate = modifiedDate; } }
서버 시간이 한국 표준시를 기준으로 2020년 1월 15일 17시 54분 인 경우 ISO-8606 형식으로 변환을 하면 2020-01-15T17:52:00.000+00:00 값이 된다.
자바스크립트에서 서버에서 응답한 UTC 기준 시간 값을 인자로 Date 객체를 생성하면 클라이언트 타임존이 한국표준시인 경우 Thu Jan 16 2020 02:52:00 GMT+0900 (한국 표준시) Date 값이 생성된다.
new Date ('2020-01-15T17:52:00.000+00:00')
자바스크립트에서 다른 시간대로 보여주려면 Moment 스크립트를 사용하면 된다. 먼저 사용을 위하여 아래와 같이 자바 스크립트를 HTML 에 추가한 다음 원하는 타입존 값을 지정하여 변환하면 된다.
댓글 없음:
댓글 쓰기