日付文字列を分割する必要があり、
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);
何らかの理由で、FieldPosition 引数を持つ format() オーバーロードが Android プラットフォームに含まれていません。これを別の方法で行う方法のアイデアはありますか? パターン文字列をトークン化する簡単な方法はありますか? 他のアイデアはありますか?