特别是使用 DateUtils,我如何格式化没有年份的数字日期
Specifically using DateUtils, how do I format a numeric date with no year
我想将日期字符串格式化为没有年份(例如:“1/4”)。
int flags = DateUtils.FORMAT_NUMERIC_DATE | DateUtils.FORMAT_NO_YEAR;
以上标志仍然在日期后附加一年(例如:“1/4/2016”)。如何删除年份?
这很适合我
int flags = DateUtils.FORMAT_NUMERIC_DATE | DateUtils.FORMAT_NO_YEAR;
String s = DateUtils.formatDateTime(this, System.currentTimeMillis(), flags);
尝试使用 SimpleDateFormat。像这样:
Date date = new Date();
SimpleDateFormat df = new SimpleDateFormat("MM/dd");
String dateString = df.format(date);
日期格式似乎在 4.4 Android 版本之后发生了变化:
对于 4.1 Android 版本 DateUtils.formatDateTime goes up to 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;
}
因此您必须 trim 生成字符串或使用 DateFormat/SimpleDateFormat 删除 4.1 上的年份字段 Android。
我想将日期字符串格式化为没有年份(例如:“1/4”)。
int flags = DateUtils.FORMAT_NUMERIC_DATE | DateUtils.FORMAT_NO_YEAR;
以上标志仍然在日期后附加一年(例如:“1/4/2016”)。如何删除年份?
这很适合我
int flags = DateUtils.FORMAT_NUMERIC_DATE | DateUtils.FORMAT_NO_YEAR;
String s = DateUtils.formatDateTime(this, System.currentTimeMillis(), flags);
尝试使用 SimpleDateFormat。像这样:
Date date = new Date();
SimpleDateFormat df = new SimpleDateFormat("MM/dd");
String dateString = df.format(date);
日期格式似乎在 4.4 Android 版本之后发生了变化:
对于 4.1 Android 版本 DateUtils.formatDateTime goes up to 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;
}
因此您必须 trim 生成字符串或使用 DateFormat/SimpleDateFormat 删除 4.1 上的年份字段 Android。