Как получить 2 объекта даты, содержащих текущее время, одно в GMT, а другое в местном - PullRequest
0 голосов
/ 04 сентября 2018

Я пытаюсь заполнить 2 объекта даты, один по местному времени, а другой в UTC.

Я не пытаюсь напечатать дату в виде строки в GMT / UTC, пожалуйста, не предлагайте DateFormatting, и не говорите, что это дубликат, пока не прочитаете полный вопрос.

Локальный, у меня нет проблем:

Date dateLocal = new Date();

Проблема в том, что я не могу получить utcDate для UTC.

Использование календаря примерно так:

TimeZone utcTimeZone = TimeZone.getTimeZone("UTC");
Calendar c = new GregorianCalendar();
c.setTime(new Date());
c.setTimeZone(TimeZone.getTimeZone(utcTimeZone.getID()));
Date utcDate = c.getTime();

При отладке или отправке в веб-службу utcDate отображается в моем местном часовом поясе вместо UTC.

Использование Joda:

DateTime utcDateTime = DateTime.now(DateTimeZone.UTC);
Date utcDate = utcDateTime.toDate();

Та же проблема: utcDate при отладке / отправке на веб-сервис отображается по местному времени.

Вот как выглядит объект при отладке:

enter image description here

Это проблема, потому что это заставляет веб-сервис (к которому у меня нет доступа) думать, что это время UTC, поэтому, когда оно выполняет свою работу и конвертации, время всегда отключено на 4 часа, так как для меня UTC Местное преобразование - GMT -4.

ЕДИНСТВЕННЫЙ способ, которым я смог получить это для отправки даты в формате UTC, это добавление:

TimeZone.setDefault(TimeZone.getTimeZone("UTC"));

НО это также изменяет объект LocalTime , даже если этот объект был определен и установлен до изменения временной зоны по умолчанию.

Итак, я понял, что объект Date () использует локаль JVM, поэтому каждый раз, когда создается Дата, она создается в часовом поясе по умолчанию и, очевидно, всякий раз, когда меняется часовой пояс по умолчанию, все объекты Date (даже если они уже созданы) перейдите на новый часовой пояс по умолчанию ... Я знаю, что объекты Date - это миллионы с настоящего момента до 1970 года, но TimeZone, очевидно, учитывается в Web-сервисе, и это портит мои результаты ... как я могу получить даты, как я хочу?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...