Envio de uma data e fuso horário do servidor GAE para o cliente GWT

OK gente, eu tenho contornado esse problema por cerca de 2 semanas agora tentando tudo o que posso pensar e olhando para toneladas de respostas aqui que sinto que eles vão responder, mas eu simplesmente não posso descobrir como eu estou destinado a fazer o que estou tentando fazer e está me levando absolutamente NUTS! Ninguém parece ter uma resposta em qualquer lugar, há meia respostas em todo o lugar, mas nenhum parece realmente fazer o que eu preciso fazer, com certeza ALGUÉM já resolveu esse problema antes! Por favor, desculpe a pergunta REALMENTE longa, mas é importante que a pergunta seja feita corretamente, para que as respostas realmente atinjam a necessidade! : D

Também, por favor, não se preocupe em ler mais, se é provável que você forneça alguma resposta que não leve em conta que meu datastore / servidor é o Google App Engine (GAE) e meu cliente está escrito no Google Web Toolkit (GWT) e tudo está escrito em Java, eu não sei nada sobre Python ou MySQL ou PHP ou qualquer coisa assim

Finalmente, se alguém souber de um lugar melhor para descobrir coisas assim, POR FAVOR, deixe-me saber como eu continuo chegando com questões como esta e não tenho idéia de como encontrar uma solução diferente do aqui, ou passar horas e horas pesquisando google para alguém que já conseguiu descobrir isso. Eu também não entendo como descobrir nada do JavaDocs - desculpe, mas até que alguém me explique, eu não vou conseguir

Eu tenho um datetime armazenado no servidor (em UTC, obviamente) Eu também tenho armazenado no servidor um fuso horário para cada empresário armazenado como uma seqüência de caracteres (por exemplo"America/New_York"). Esta string é obtida usandojava.util.TimeZone.getAvailableIDs() no servidor e fazendo com que o proprietário da empresa selecione o fuso horário relevante para seus negócios (o padrão é"Europe/London" se eles não escolhem nada - não há necessidade de ficar preso nesse bit) Eu preciso passar quaisquer datetimes de volta para o PC cliente em algum momento no futuro, IGNORANDO o fuso horário local em seu PC, porque o datetime precisa ser exibido de acordo com o fuso horário do proprietário da empresa.

Então, como exemplo, o empresário é um cabeleireiro em Londres e eles têm um cronograma de consultas on-line que está disponível para ser visto por qualquer cliente potencial deles. Um desses clientes (também em Londres) quer agendar um horário, vê um horário às 9h na segunda-feira, 3 de setembro, e o reserva.

Isso é armazenado no Datastore como o horário UTC (que na verdade é 0800, pois o BST é UTC + 1) e, é claro, o proprietário da empresa selecionou"Europe/London" como seu fuso horário. Tudo bem até agora.

Agora, em algum momento no futuro, o cliente está em uma reunião de negócios em Nova York, e percebe que eles têm um compromisso na semana seguinte para um corte de cabelo em Londres e eles querem movê-lo por uma semana, então eles tentam VEJA o encontro (na agenda de cabeleireiros), mas eles não querem vê-lo às 4h, horário de Nova York, eles querem vê-lo às 9h da manhã.

Então, meu problema é que quando o cliente clica em VER compromissos em 3 de setembro, o servidor pode enviar de volta um datetime UTC de 0800 e umjava.util.TimeZone ID String de"Europe/London"

Mas porque no cliente só posso usar

com.google.gwt.i18n.client.TimeZone

não me permite usar a função

TimeZone bizTimeZone=TimeZone.getTimeZone("Europe/London")
(which works for `java.util.TimeZone`)

como causa o erro

"The method getTimeZone(String) is undefined for the type TimeZone"

sugere alterá-lo para

com.google.gwt.i18n.client.TimeZone.createTimeZone("Europe/London")

mas esta versão, está esperando um GWTcom.google.gwt.i18n.client.TimeZoneConstants "objeto" (exemplo mostrado no final desta mensagem) e não a string simples que ojava.util.TimeZone.createTimeZone() vai aceitar.

Eu posso criar isso usando:

final TimeZoneConstants constTz = GWT.create(TimeZoneConstants.class);
final TimeZone timeZoneCali = TimeZone.createTimeZone(constTz.europeLondon());

Mas eu não sei como fazer isso quando estou começando com"Europe/London" e / ou não sei como armazenar esse objeto no DataBase do App Engine e depois recuperá-lo mais tarde.

Aliás, entre o texto comentado, também tentei usar as seguintes linhas:

//Calendar tmad = new GregorianCalendar(TimeZone.getTimeZone("Europe/London"));
//Calendar cal = Calendar.getInstance(someTimeZone);
//DateFormat df1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//df1.setTimeZone(TimeZone.getTimeZone("Europe/London"));
//final TimeZone timeZoneClient = TimeZone.createTimeZone("Europe/London");
//dtf.format(date,timeZoneClient)

Deve haver uma maneira padrão de fazer isso com certeza, eu realmente não posso ser a primeira pessoa a ter que resolver este problema!

constTz.europeLondon () = {"transições": [19394, 60, 24770, 0, 28130, 60, 33506, 0, 36866, 60, 42242, 0, 45602, 60, 50978, 0, 54506, 60, 59714, 0, 63242, 60, 68450, 0, 71978, 60, 77354, 0, 80714, 60, 86090, 0, 89450, 60, 94826, 0, 98521, 60, 103561, 0, 107257, 60, 112297, 0, 115993, 60, 121033, 0, 124729, 60, 129937, 0, 133633, 60, 138673, 0, 142369, 60, 147409, 0, 151105, 60, 156145, 0, 159841, 60, 164881, 0, 168577, 60, 173785, 0, 177313, 60, 182521, 0, 186217, 60, 191257, 0, 194953, 60, 199993, 0, 203689, 60, 208729, 0, 212425, 60, 217465, 0, 221161, 60, 226201, 0, 230065, 60, 235105, 0, 238801, 60, 243841, 0, 247537, 60, 252577, 0, 256273, 60, 261481, 0, 265009, 60, 270217, 0, 273745, 60, 278953, 0, 282649, 60, 287689, 0, 291385, 60, 296425, 0, 300121, 60, 305329, 0, 308857, 60, 314065, 0, 317593, 60, 322801, 0, 326329, 60, 331537, 0, 335233, 60, 340273, 0, 343969, 60, 349009, 0, 352705, 60, 357913, 0, 361441, 60, 366649, 0, 370177, 60, 375385, 0, 379081, 60, 384121, 0, 387817, 60, 3 92857, 0, 396553, 60, 401593, 0, 405289, 60, 410497, 0, 414025, 60, 419233, 0, 422761, 60, 427969, 0, 431665, 60, 436705, 0, 440401, 60, 445441, 0, 449137, 60, 454345, 0, 457873, 60, 463081, 0, 466609, 60, 471817, 0, 475513, 60, 480553, 0, 484249, 60, 489289, 0, 492985, 60, 498025, 0, 501721, 60, 506929, 0, 510457, 60, 515665, 0, 519193, 60, 524401, 0, 528097, 60, 533137, 0, 536833, 60, 541873, 0, 545569, 60, 550777, 0, 554305, 60, 559513, 0, 563041, 60, 568249, 0, 571777, 60, 576985, 0, 580681, 60, 585721, 0, 589417, 60, 594457, 0], "nomes": ["GMT", "Greenwich Tempo Médio "," BST "," Horário de Verão Britânico "]," id ":" Europa / Londres "," std_offset ": 0}

questionAnswers(2)

yourAnswerToTheQuestion