2010-02-03 2 views
6

(java.util.) Date 클라이언트 측을 표시하려고하고 브라우저의 시간대를 계속 사용하므로 페이지를 보는 위치에 따라 다른 날짜가 표시됩니다.GWT DateTimeFormat을 클라이언트의 시간대가 아닌 서버 TimeZone을 사용하여 표시하려면 어떻게해야합니까?

사용자 대신 서버의 시간대를 사용하여 날짜를 표시하도록 포맷터 (DateTimeFormat)를 얻으려면 어떻게해야합니까?

감사

답변

3

은 "쉬운"솔루션 (서버와의 모든 통신을 필요로하지 않는 한) 다만 다음과 같이 특정 시간대를 (하나 개의 서버가있는)를 사용하는 DateTimeFormat을 강요 :

String pseudoServerTime = DateTimeFormat.getFullTimeFormat().format(new Date(), TimeZone.createTimeZone(TimeZoneConstants.europeWarsaw()); 

public static final으로 시간대 문자열/개체를 하드 코딩하여 서버를 이동/변경 (GWT 컴파일러가 인라인으로 수행하므로 성능 저하가 발생하지 않음)하면 쉽게 변경할 수 있습니다.

+0

감사의 말 Igro - 제가 처음으로 시간대 오프셋을 하드 코드했지만, 처음 생각했습니다. hardcoded 오프셋을 사용하여 내 문제는 우리가 일광 절약 시간제 여기 (시드니, 호주) 및 시간이 끝날 때 다시 것입니다. – RodeoClown

+1

오프셋을 하드 코드하지 마십시오. TimeZone 개체를 하드 코드하고 일광 절약 시간이 고려됩니다. –

1

클라이언트에서 날짜가 수정 될 수 있습니까? 그렇지 않으면 서버에서 형식을 수행하고 문자열 값을 전송하십시오. 마지막 한가지. GWT의 클라이언트 측에서는 일정에 문제가있는 것으로 보입니다. http://blog.gerardin.info/archives/674

+0

안녕하세요 Carnell, 날짜는 클라이언트에서 수정되지 않지만 정렬을 위해 테이블에서 사용되며 "2010 년 1 월 31 일"형식이므로 서버 측 문자열을 사용하면 정렬을 방해 할 수 있습니다. 일. 링크를 지금 확인하십시오. 감사합니다. – RodeoClown

+0

표시 할 문자열로 날짜를 전달하고 정렬에 사용할 날짜의 숫자 값도 전달할 수 있습니다. Date.getTime()을 사용하여 Date에 대한 long 값을 가져옵니다. 이것에 대해 짜증나는 것은 클라이언트에게 다른 필드를 전달해야하지만 작동해야합니다. – Carnell

+0

로케일 세트 (예 : yyyy-MM-dd hh : mm Z)를 사용하여 서버의 String (java의 SimpleDateFormat 사용)을 전달할 수 없었으며 클라이언트에서이 형식을 사용하여 GWT의 DateTimeFormater . 서버의 시간대를 사용하여 날짜를 만들고 다른 용도로 사용할 수도 있습니다. –

관련 문제