Оказывается, это была ошибка. Сопровождающий проекта исправил проблему в последней сборке 1.1.4. https://bugs.launchpad.net/sikuli/+bug/1811938
Преобразуйте дату и время в сторону клиента GMT (в JavaScript, если это - веб-приложение) прежде, чем отправить его на сервер. Позвольте серверу только работать с GMT (я сказал бы что UTC). То же самое для отображения дат/времени. Отправьте GMT/UTC клиенту и позвольте JS локализовать. Это - единственный абсолютно безопасный путь, по-моему, потому что Вы позволяете ему быть до пользовательской операционной системы для выяснения то, что время, как предполагается.
Существуют другие подходы причины, и если только необходимо знать то, что клиент настало время теперь можно просто получить, смещение от него (может быть получен через JS и т.д.). Но если Вам нужны точные даты/времена в различных местоположениях для исторической и будущей даты/времен, Вы лучше позволяете клиенту обработать ее.
PS: В моей реализации TimeZone я также использую формат времени UNIX для коммуникации между клиентом и сервером. Это просто легче проанализировать, и я живо это - собственный формат даты и времени для JS. Я не могу представить свой код для Вас теперь, но должен быть относительно легок к Google для этого.
Ваша единственная опция (помимо явного пользовательского выбора) состоит в том, чтобы получить смещение часового пояса из браузера:
var tzOffset = new Date().getTimezoneOffset(); // Minutes
Затем необходимо отправить его на сервер при помощи скрытого поля или другого подходящего подхода.
Это даст Вам только смещение часового пояса, не полную информацию о часовом поясе. Это не очень надежно, таким образом, я все еще оставил бы выбор пользователю, но использовал бы эту информацию для предварительного выбора подходящего часового пояса.
Упакуйте anyones, заинтересованный, я нашел сайт, который дает хороший рабочий пример этого в действии