日付文字列に年が含まれないようにフォーマットしたい (例: "1/4")。
int flags = DateUtils.FORMAT_NUMERIC_DATE | DateUtils.FORMAT_NO_YEAR;
上記のフラグは、日付に年を追加します (例: "1/4/2016")。年を落とすにはどうすればいいですか?
日付文字列に年が含まれないようにフォーマットしたい (例: "1/4")。
int flags = DateUtils.FORMAT_NUMERIC_DATE | DateUtils.FORMAT_NO_YEAR;
上記のフラグは、日付に年を追加します (例: "1/4/2016")。年を落とすにはどうすればいいですか?
4.4 Android バージョン以降、日付の形式が変更されたようです。
4.1 Android バージョンの場合、 DateUtils.formatDateTimeはDateUtils.formatDateRangeまで上がり、文字列は Formatter を使用してフォーマットされます。
しかし、4.4 Android バージョンからDateUtils.formatDateRangeを使用libcore.icu.DateIntervalFormat
して文字列をフォーマットします。
public static Formatter formatDateRange(Context context, Formatter formatter, long startMillis,
long endMillis, int flags, String timeZone) {
// If we're being asked to format a time without being explicitly told whether to use
// the 12- or 24-hour clock, icu4c will fall back to the locale's preferred 12/24 format,
// but we want to fall back to the user's preference.
if ((flags & (FORMAT_SHOW_TIME | FORMAT_12HOUR | FORMAT_24HOUR)) == FORMAT_SHOW_TIME) {
flags |= DateFormat.is24HourFormat(context) ? FORMAT_24HOUR : FORMAT_12HOUR;
}
String range = DateIntervalFormat.formatDateRange(startMillis, endMillis, flags, timeZone);
try {
formatter.out().append(range);
} catch (IOException impossible) {
throw new AssertionError(impossible);
}
return formatter;
}
そのため、結果の文字列をトリミングするか、DateFormat/SimpleDateFormat を使用して 4.1 Android の年フィールドを削除する必要があります。