Senden eines Datums und einer Zeitzone vom GAE-Server an den GWT-Client

OK Leute, ich habe dieses Problem seit ungefähr 2 Wochen umgangen und versuche jetzt alles, was mir einfällt, und schaue mir Unmengen von Antworten an, die sich so anfühlen, als würden sie es beantworten, aber ich kann einfach nicht herausfinden, wie ich gemeint bin Tu was ich versuche und es treibt mich absolut NUTS an! Niemand scheint irgendwo eine Antwort zu haben, es gibt überall halbe Antworten, aber keiner scheint tatsächlich das zu tun, wofür ich es brauche, sicherlich hat JEMAND dieses Problem schon einmal gelöst! Bitte entschuldigen Sie die WIRKLICH lange Frage, aber es ist wichtig, dass die Frage richtig gestellt wird, damit die Antworten tatsächlich das Bedürfnis beantworten! : D

Lesen Sie auch nicht weiter, wenn Sie wahrscheinlich eine Antwort geben, die nicht berücksichtigt, dass mein Datenspeicher / Server Google App Engine (GAE) ist und mein Client in Google Web Toolkit (GWT) und allem geschrieben ist ist in Java geschrieben, ich weiß nichts über Python oder MySQL oder PHP oder so etwas

Schließlich, wenn jemand einen besseren Ort kennt, um solche Dinge herauszufinden, lassen Sie es mich bitte wissen, da ich immer wieder auf solche Probleme stoße und keine Ahnung habe, wie ich eine andere Lösung als hier finden oder stundenlang nach Google suchen kann für jemanden, der es bereits geschafft hat, es herauszufinden. Ich verstehe auch nicht, wie man etwas aus JavaDocs herausfindet - tut mir leid, aber bis es mir jemand erklärt, werde ich es einfach nicht bekommen

Ich habe eine Datumszeit auf dem Server gespeichert (in UTC offensichtlich). Ich habe auch eine Zeitzone für jeden Geschäftsinhaber auf dem Server gespeichert, die als Zeichenfolge gespeichert ist (z. B."America/New_York"). Diese Zeichenfolge erhalten Sie mitjava.util.TimeZone.getAvailableIDs() auf dem Server und veranlassen den Geschäftsinhaber, die relevante Zeitzone für sein Geschäft auszuwählen (Standard ist"Europe/London" Wenn sie sich für nichts entscheiden, müssen sie nicht hängen bleiben.) Ich muss zu einem späteren Zeitpunkt alle Daten an den Client-PC zurückgeben und die lokale Zeitzone auf ihrem PC ignorieren, da die Datums- / Uhrzeit-Angabe erforderlich ist angezeigt nach der Zeitzone des Geschäftsinhabers.

So ist beispielsweise der Geschäftsinhaber ein Friseur in London, und er verfügt über einen Online-Terminplan, der für jeden potenziellen Kunden von ihm einsehbar ist. Einer dieser Kunden (ebenfalls in London) möchte einen Termin buchen, sieht sich am Montag, den 3. September, um 9.00 Uhr MEZ einen Termin an und bucht diesen.

Dies wird dann im Datenspeicher als UTC-Zeit gespeichert (was tatsächlich 0800 ist, da BST UTC + 1 ist), und natürlich hat der Geschäftsinhaber dies ausgewählt"Europe/London" als ihre Zeitzone. Alles soweit in Ordnung.

JETZT, irgendwann in der Zukunft, ist der Kunde in einem Geschäftstreffen in New York und stellt fest, dass er in der folgenden Woche einen Termin für einen Haarschnitt in London hat und diesen um eine Woche verschieben möchte, und versucht es dann Sehen Sie sich den Termin an (im Terminkalender für Friseure), aber sie möchten ihn nicht um 4 Uhr New Yorker Zeit, sondern um 9 Uhr britischer Zeit sehen.

Mein Problem ist also, dass wenn der Kunde am 3. September auf VIEW-Termine klickt, der Server eine UTC-Datumszeit von 0800 und a zurücksenden kannjava.util.TimeZone ID Zeichenfolge von"Europe/London"

Aber weil auf dem Client kann ich nur verwenden

com.google.gwt.i18n.client.TimeZone

Ich kann die Funktion nicht verwenden

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

wie es den Fehler verursacht

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

es schlägt vor, es zu ändern

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

Aber diese Version erwartet ein GWTcom.google.gwt.i18n.client.TimeZoneConstants "Objekt" (Beispiel am Ende dieser Nachricht) und nicht die einfache Zeichenfolge, die diejava.util.TimeZone.createTimeZone() werde akzeptieren.

Ich kann dies erstellen, indem ich verwende:

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

Aber ich weiß nicht, wie ich das machen soll, wenn ich damit anfange"Europe/London" und / oder ich weiß nicht, wie ich dieses Objekt in der App Engine-Datenbank speichern und später wieder abrufen soll.

Übrigens habe ich im kommentierten Text auch folgende Zeilen ausprobiert:

//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)

Es MUSS einen Standardweg geben, um dies SICHER zu tun, ich kann wirklich nicht die erste Person sein, die jemals dieses Problem lösen muss!

constTz.europeLondon () = {"Übergänge": [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], "names": ["GMT", "Greenwich" Mean Time "," BST "," British Summer Time "]," id ":" Europe / London "," std_offset ": 0}

Antworten auf die Frage(2)

Ihre Antwort auf die Frage