Странный синтаксический анализ строки даты в эмуляторе Android 2.0 - PullRequest
0 голосов
/ 18 мая 2010

У меня есть простой тестовый код для тестирования SimpleDateFormat. Этот код хорошо работает на эмуляторе Eclipse и Android 1.5, но не работает на эмуляторе Android 2.0 Кто-нибудь знает почему? Спасибо.

public class TemplateActivity extends Activity {
   /** Called when the activity is first created. */
   @Override
   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       TextView tv = new TextView(this);
       tv.setText(R.string.hello);
       setContentView(tv);

       SimpleDateFormat format =
           new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss zzz");

       String dateStr = "Mon, 17 May 2010 01:45:41 GMT"; 

       try {
           Date parsed = format.parse(dateStr);
           Log.v("Test", parsed.toString());
       } catch (ParseException pe) {
           Log.v("Test", "ERROR: Cannot parse \"" + dateStr + "\"");
       }

   }
}

Сообщение журнала:

V/Test(  400): ERROR: Cannot parse "Mon, 17 May 2010 01:45:41 GMT"

Ответы [ 3 ]

1 голос
/ 18 мая 2010

В ответ на Скруд,

Я попытался "EEE, дд MMM гггг ЧЧ: мм: сс z", но получил то же сообщение об ошибке.

Я тоже пробовал

SimpleDateFormat format =
       new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss zzz", Locale.US);

Это работает. Но система долго загружает имена часовых поясов для en_US для каждого вызова:

I/Resources(  471): Loaded time zone names for en_US in 1904ms.
D/dalvikvm(  471): GC freed 10658 objects / 486232 bytes in 88ms
I/Resources(  471): Loaded time zone names for en_US in 1400ms.
I/Resources(  471): Loaded time zone names for en_US in 1260ms.
D/dalvikvm(  471): GC freed 10615 objects / 491920 bytes in 91ms
I/Resources(  471): Loaded time zone names for en_US in 1360ms.
I/Resources(  471): Loaded time zone names for en_US in 1232ms.
D/dalvikvm(  471): GC freed 10623 objects / 460544 bytes in 91ms
I/Resources(  471): Loaded time zone names for en_US in 1344ms.
I/Resources(  471): Loaded time zone names for en_US in 1228ms.

Что мне делать?

0 голосов
/ 11 октября 2010

У меня такая же проблема, так как я отлаживаю проблему, принадлежащую методу для преобразования формы Дата в строку, у меня есть решение здесь: Слишком длинный часовой пояс загрузки Android: загруженные имена часовых поясов для en_US

И производительность увеличилась в 10 раз:)

0 голосов
/ 18 мая 2010

Вместо этого ваша строка формата должна быть "EEE, dd MMM yyyy HH:mm:ss z".

Посмотрите примеры на странице Javadoc SimpleDateFormat

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...