Моя первая попытка была:
DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss z");
Date date = formatter.parse(string);
Выдает ParseException, поэтому я нашел этот хак:
DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss z");
TimeZone timeZone = TimeZone.getTimeZone("Etc/GMT");
formatter.setTimeZone(timeZone);
Date date = formatter.parse(string);
Это тоже не сработало, и теперь я застрял. Он анализируется без проблем, если я просто изменил часовой пояс на «GMT».
edit: Пример строки для разбора будет "2011-11-29 10:40:24 Etc / GMT"
edit2: Я бы предпочел не удалять информацию о часовом поясе полностью. Я кодирую сервер, который получает дату от внешнего пользователя, поэтому, возможно, другие даты будут иметь другие часовые пояса.
Если быть более точным: эта конкретная дата, которую я получаю, связана с квитанцией с сервера Apple после совершения покупки в приложении для приложения iphone, но я также могу получать даты из других источников.