2010-02-11 4 views
2

com.google.gwt.i18n.client.timezone을 사용하여 서버에서와 같이 날짜를 표시하려고했지만 GWT는 서식을 지정할 때 현재 시간대를 자동으로 추가합니다. 즉 잘못된 날짜가 표시됩니다. 다른 시간대에GWT 시간대가 뒤로 오프셋되어 있습니까?

이 문제를 해결하기 위해 서버의 시간대 오프셋을 클라이언트에 보내고 서식 지정시이를 사용합니다.

현재 오스트레일리아에 거주하며 현재 시간대는 +11 GMT/UTC이지만, 날짜 형식을 지정할 때 표시되는 기본 시간대는 -11 GMT입니다.

서버로부터의 오프셋은 +11 시간이지만,이 오프셋을 사용하여 날짜를 포맷하고 시도 할 때 잘못된 날짜가 표시되므로 대신 음수 오프셋을 사용해야합니다.

왜 기본 시간대가 잘못 되었습니까?

답변

3

날짜를 확인할 때 (특히 날짜를 파싱하는 경우) 시간대를 지정해야합니다. GWT의 DateTimeFormat.parse은 "RFC 형식"시간대 (태평양 표준시는 -0800)와 같은 것을 지원합니다. 서버에서 문자열로 날짜를 클라이언트에 전송하는 경우이 형식으로 시간대가 포함되어 있는지 확인하십시오.

그런 다음 날짜를 문자열로 변환하여 사용자에게 표시하면 TimeZone을 지정하는 DateTimeFormat.format의 오버로드를 사용하고 날짜를 표시 할 시간대 (시간대 사용자의 시스템이 설정되어있는 시간대에 날짜가 표시됩니다. 기본적으로 날짜는 사용자 시스템이 설정된 시간대로 표시됩니다. GWT의 기본 시간대 설정 (시간대를 무시하고 서버 시간대의 모든 작업을 수행 할 수 있음)은 내가 쓸 때 an open issue (3489)입니다.

+0

감사합니다 Dominic, 서버 (문자열이 아님)의 Date 객체와 형식 메서드를 사용하고 서버에서 전달한 시간대도 사용하고 있습니다. 파싱은 전혀 일어나지 않습니다. – RodeoClown

+0

서버로부터받는 Date 객체의 데이터를 검사 할 수 있습니까? 거기에 뭐가 들어 있니? 또한 온전한 체크에 대해서, 브라우저를 사용하는 시스템의 시간대는 무엇입니까? –

+0

날짜의 시간대 오프셋은 -660 분 (클라이언트의 TimeZone 사용)입니다. 서버에서 오프셋을 가져 오면 660 분입니다. 재미 :) – RodeoClown

관련 문제