Я хочу преобразовать строки типа "20000603163334 GST"
или "20000603163334 -0300"
в UTC. Проблема в том, что часовые пояса в моих строках могут быть «общими часовыми поясами», я имею в виду, что они могут быть строками, такими как CET, GST и т. Д. И т. Д. И я не знаю, как их преобразовать.
Из-за этих строковых часовых поясов я не могу использовать Joda Time's DateTimeFormat.forPattern("yyyyMMddhhmmss z").withZone(DateTimeZone.UTC);
, потому что согласно документации: "Имена часовых поясов ('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, но я пока не нашел решения.