Мне нужно разбить строку даты на части, и я делаю это, используя
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. Есть идеи, как это сделать по-другому? Есть ли простой способ токенизации строки шаблона? Есть другие идеи?