Отправка даты и часового пояса с сервера GAE клиенту GWT

Ладно, ребята, я обходил эту проблему уже около 2 недель, пробуя все, что я могу придумать, и просматривая здесь тонны ответов, которые чувствуют, что они собираются на них ответить, но я просто не могу понять, как я должен делай то, что я пытаюсь сделать, и это сводит меня с ума! Похоже, ни у кого нет ответа, везде есть половина ответов, но, похоже, никто не делает то, что мне нужно, конечно, кто-то уже решил эту проблему раньше! Пожалуйста, извините за ДЕЙСТВИТЕЛЬНО длинный вопрос, но важно, чтобы вопрос был задан правильно, чтобы ответы действительно отвечали потребностям! : D

Также, пожалуйста, не читайте дальше, если вы, вероятно, предоставите какой-либо ответ, который не учитывает, что моим хранилищем данных / сервером является Google App Engine (GAE), а мой клиент написан в Google Web Toolkit (GWT) и все такое написано на Java, я ничего не знаю о Python или MySQL или PHP или что-нибудь подобное

Наконец, если кто-нибудь знает, где лучше разбираться, как это, ПОЖАЛУЙСТА, дайте мне знать, поскольку я продолжаю придумывать подобные проблемы, и не знаю, как найти решение, кроме как здесь, или тратить часы на поиск в Google. для кого-то еще, кто уже сумел понять это. Я также не понимаю, как понять что-нибудь из JavaDocs - извините, но пока кто-то не объяснит мне, я просто не собираюсь это получить

У меня есть дата и время на сервере (очевидно, в UTC). Я также сохранил на сервере временную зону для каждого владельца бизнеса, хранящуюся в виде строки (например,"America/New_York"). Эта строка получается с помощьюjava.util.TimeZone.getAvailableIDs() на сервере и заставляя владельца бизнеса выбрать соответствующий часовой пояс для своего бизнеса (по умолчанию"Europe/London" если они ничего не выбирают - не нужно зацикливаться на этом бите) Мне нужно в какой-то момент в будущем передавать любые даты и времени на клиентские ПК, игнорируя местный часовой пояс на их ПК, потому что дата и время должны быть отображается в соответствии с часовым поясом владельца бизнеса.

Например, владелец бизнеса - парикмахер в Лондоне, и у них есть расписание онлайн-встреч, которое доступно для просмотра любому потенциальному клиенту. Один из этих клиентов (также в Лондоне) хочет записаться на прием, видит место в 9:00 BST в понедельник 3 сентября и заказывает его.

Затем он сохраняется в хранилище данных как время UTC (которое на самом деле 0800, так как BST - UTC + 1), и, конечно, владелец бизнеса выбрал"Europe/London" как их часовой пояс. Пока все хорошо.

ТЕПЕРЬ, в какой-то момент в будущем, клиент находится на деловой встрече в Нью-Йорке и понимает, что на следующей неделе у него назначена встреча для стрижки в Лондоне, и они хотят перенести ее на неделю, поэтому они затем пытаются ПРОСМОТРЕТЬ встречу (в книге встреч парикмахеров), но они не хотят видеть это как 4:00 по нью-йоркскому времени, они хотят видеть это как 9:00 по британскому времени.

Поэтому моя проблема заключается в том, что, когда клиент нажимает на ПРОСМОТР встреч, 3 сентября, сервер может отправить дату UTC 08:00 иjava.util.TimeZone Строка удостоверения личности"Europe/London"

Но потому что на клиенте я могу использовать только

com.google.gwt.i18n.client.TimeZone

это не позволяет мне использовать функцию

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

как это вызывает ошибку

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

предлагает изменить его на

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

но эта версия ожидает GWTcom.google.gwt.i18n.client.TimeZoneConstants & Quot; объект & Quot; (пример показан в конце этого сообщения), а не простая строка,java.util.TimeZone.createTimeZone() приму.

Я могу создать это с помощью:

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

Но я не знаю, как это сделать, когда я начинаю с"Europe/London" и / или я не знаю, как сохранить этот объект в базе данных App Engine, а затем извлечь его позже.

Между прочим, среди прокомментированного текста я также попытался использовать следующие строки:

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

ОБЯЗАТЕЛЬНО должен быть стандартный способ сделать это, я действительно не могу быть первым человеком, который когда-либо должен был решить эту проблему!

constTz.europeLondon()={"transitions": [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, 392857, 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}

Ответы на вопрос(2)

Ваш ответ на вопрос