Я так понимаю, что +0300
является истинным смещением, а GMT
как раз там, чтобы сказать, что +0300
относительно GMT. Joda-Time поддерживает апострофы для разделения постоянного текста, который не должен интерпретироваться:
DateTimeFormatter formatter = DateTimeFormat.forPattern("E, d MMM yyyy HH:mm:ss Z 'GMT'");
DateTime dt = DateTime.parse("Mon, 23 Jul 2018 07:08:26 +0300 GMT", formatter);
System.out.println(dt);
Вывод на мой компьютер в Европе / часовой пояс Копенгагена:
2018-07-23T06: 08: 26,000 + 02: 00
Кроме того, идея использования строчных и прописных букв z
была не слишком плохой. Это работает, если вы поставите их в обратном порядке:
DateTimeFormatter formatter = DateTimeFormat.forPattern("E, d MMM yyyy HH:mm:ss Z z");
2018-07-23T04: 08: 26.000Z
Я предпочитаю апострофы, хотя. Читателю трудно понять, чего ожидать от Z z
.