현지 시간으로 이벤트를 표시해야하는 곳에서 이 아닌이 사용자의 시간대가 아닌 이벤트가 발생하는 시간대에 표시되는 앱이 있습니다. 시간대 오프셋을 포함하여 ISO-8601 형식으로 시간을 가져옵니다. 시간대는 일정하지 않습니다. 표시되는 각 이벤트는 다른 출발 시각과 도착 시각을 나타낼 수 있습니다.GWT에서 현지 시간 표시
예를 들어, "2014-02-05T09 : 00-08 : 00"이고 "9:00 am"으로 표시하고 싶습니다.
private static final DateTimeFormat ISO_TIME_FORMAT =
DateTimeFormat.getFormat("yyyy-MM-dd'T'HH:mmZZZ");
private static final DateTimeFormat TIME_OF_DAY_FORMAT =
DateTimeFormat.getFormat(PredefinedFormat.HOUR_MINUTE);
public static String formatTimeOfDay(String iso8601Time) {
return TIME_OF_DAY_FORMAT.format(QPX_TIME_FORMAT.parse(iso8601Time));
}
을하지만 미국 동부에있어 이후이, 내 경우에는, "오전 6시의"사용자의 시간대의 시간을 표시
내 첫째, 순진 코드는 다음처럼 보였다.
GWT 참조를 보면 ISO-8601 날짜를 기준으로 올바른 TimeZone을 보유해야하는 것처럼 보입니다. 그러나이를 수행하는 방법이 명확하지 않습니다. 시도했습니다.
public static String formatTimeOfDay(String isoTime) {
Date date = QPX_TIME_FORMAT.parse(isoTime);
String tzoneStr = qpxTime.substring(16);
TimeZone tzone = TimeZone.createTimeZone(tzoneStr);
return TIME_OF_DAY_FORMAT.format(date, tzone);
}
"JSON 구문 분석 오류 : SyntaxError : 예기치 않은 숫자 -05 : 00"예외가 발생했습니다. 입력 문자열에서 Date와 TimeZone을 모두 파싱 할 수 있어야하는데, 그 안에 모든 정보가 인코딩되어 있기 때문입니다.
이 시점에서 isoTime.substring (11, 16)을 통해 입력 시간에서 시간을 직접 추출하는 것이 가장 쉬운 방법 인 것 같습니다. 즉, 24 시간에서 오전/오후 형식으로 변환하는 사용자 지정 파서를 작성해야하지만, 가장 쉬운 방법 일 수 있습니다.
대체 제안 사항이 있습니까?