SimpleDateFormat format разные результаты

174
04 июля 2018, 18:50

Разное значение при форматировании даты в строку на разных машинах.

Calendar date = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX");
sdf.setTimeZone(TimeZone.getTimeZone("GMT+03:00"));
sdf.format(date.getTime());

yyyy-MM-dd'T'HH:mm:ssXXX должен вернуть дату в виде String, где XXX будет +TimeZone, то есть +03:00

На одной машине получается правильный результат 2018-06-08T13:47:16+03:00, а на другой - неправильный 2018-06-08T13:47:16Z.

Кто может подсказать в чем причина?

java version "1.8.0_162"
Java(TM) SE Runtime Environment (build 1.8.0_162-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.162-b12, mixed mode)
Answer 1

Давным-давно я как-то касался подобного вопроса, там проблема была в том, что timezone в Windows была какая то кривая.

Исправлялось просто:

TimeZone tz=TimeZone.getTimeZone("GMT+03"); //вместо GMT+03:00

Да и проверьте списки TimeZone.getAvailableIds(3*60*60*1000) на разных машинах они будут другие (берется из ОС)

Answer 2

Поскольку Вы используете java 8, я бы посоветовал попробовать использовать API, который предоставляет уже сама JDK в пакете java.time. Как мне кажется это более нативный подход. Попробуйте использовать вот этот код:

DateTimeFormatter formatter= DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssZ");
ZonedDateTime.now().format(formatter);

Надеюсь это решит Вашу проблему, пусть и не даст ответ на вопрос, почему не работает Ваш вариант.

READ ALSO
Перестал работать тег <a>

Перестал работать тег <a>

Перестал работать тег в чём может быть проблема?

218
phpStorm минимизация HTML

phpStorm минимизация HTML

Имеется ли в phpStorm возможность автоматической минимизации HTML файла, как это позволяет делать плагин «YUI Compressor JS»/CSS»?

187