Я хочу преобразовать такие строки, как "20000603163334 GST"
или "20000603163334 -0300"
, во время UTC. Проблема в том, что часовые пояса в моих строках могут быть «общими часовыми поясами», я имею в виду, что они могут быть строками как CET, GST и т. Д. И т. Д. И я не знаю, как их преобразовать.
Из-за этих строковых часовых поясов я не могу использовать DateTimeFormat.forPattern("yyyyMMddhhmmss z").withZone(DateTimeZone.UTC);
Joda Time, потому что согласно документации: " Имена часовых поясов ('z') не поддаются синтаксическому анализу ".
Итак, у меня есть один вопрос: знаете ли вы, как обойти это ограничение в Joda Time? Я бы предпочел использовать Joda Time, если это возможно, вместо стандартного Java API.
Другой вариант, в котором я подумал, что могу решить эту проблему с именами часовых поясов, - это использовать SimpleDateFormat
в Java. Итак, я делаю что-то вроде:
SimpleDateFormat f = new SimpleDateFormat("yyyyMMddhhmmss z");
//f.setTimeZone(TimeZone.getTimeZone("UTC"));
f.setCalendar(new GregorianCalendar(TimeZone.getTimeZone("UTC")));
Date time = f.parse("20000603163334 GST");
SimpleDateFormat
анализирует String
(меня не волнует проблема наличия нескольких часовых поясов с одним и тем же именем - то, что этот класс анализирует, это хорошо для меня).
Проблема в том, что я не знаю, как преобразовать его отсюда в UTC. Как я могу это сделать?
Тот факт, что я установил часовой пояс f's
на UTC (обоими способами, описанными выше), не помогает. Надеюсь, кто-то поможет мне это исправить, я прочитал много вопросов и ответов по этой теме здесь, в stackoverflow, но пока не нашел решения.