Замена DateFormat в Android - отсутствует формат () с FieldPosition - PullRequest
0 голосов
/ 03 мая 2010

Мне нужно разбить строку даты на части, и я делаю это, используя

public final StringBuffer   format  (Object object, StringBuffer buffer, FieldPosition field)

из класса java.text.DateFormat. Однако реализация этой функции очень медленная, поэтому Android имеет собственную реализацию в android.text.format.DateFormat.

НО, в моем случае, я хочу извлечь различные фрагменты строки даты (год, минута и т. Д.). Так как мне нужно быть независимым от локали, я не могу использовать SimpleDateFormat и пользовательские строки. Я делаю это следующим образом:

    Calendar c = ...

    // find out what field to extract
    int field = getField();

    // Create a date string
    Field calendarField = DateFormat.Field.ofCalendarField(field);
    FieldPosition fieldPosition = new FieldPosition(calendarField);
    StringBuffer label = new StringBuffer();
    label = getDateFormat().format(c.getTime(), label, fieldPosition);

    // Find the piece that we are looking for
    int beginIndex = fieldPosition.getBeginIndex();
    int endIndex = fieldPosition.getEndIndex();
    String asString = label.substring(beginIndex, endIndex);

По какой-то причине перегрузка format () с аргументом FieldPosition не включена в платформу Android. Есть идеи, как это сделать по-другому? Есть ли простой способ токенизации строки шаблона? Есть другие идеи?

1 Ответ

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

если вы обнаружите части базовых библиотек (java. *) С некорректным поведением или недопустимой производительностью, пожалуйста, сообщите об ошибках с повторяющимися тестовыми примерами здесь:

http://code.google.com/p/android/issues/entry

...