在我的应用程序中,我从 web 服务接收格式为yyyy-MM-dd
(例如2016-03-05
)的日期,我需要将它们格式化为 [abbreviated month] [date],例如Mar 5
。此外,我有一个开始日期和结束日期,并希望将它们显示为日期范围,除非两个日期相同。
目前我正在使用DateUtils.formatDateRange()
,它应该满足我的要求并提供适当的本地化,但我遇到了两个问题:
当我的结束日期是开始日期后的第二天时,
formatDateRange()
仅显示格式化的开始日期。例如,如果开始日期是2016-03-05
并且结束日期是2016-03-06
,则该方法返回Mar 5
(但它应该是Mar 5 - Mar 6
)。为什么会这样?当结束日期在同一月份时,月份不显示。例如,如果开始日期是
2016-03-05
并且结束日期是2016-03-12
,则该方法返回Mar 5 - 12
。有没有办法让它显示出来Mar 5 - Mar 12
?
这是我的代码:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date startDate, endDate;
try {
startDate = sdf.parse(startDateString);
endDate = sdf.parse(endDateString);
} catch (ParseException ignored) {
return null;
}
int flags = DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_ABBREV_MONTH;
return DateUtils.formatDateRange(context, startDate.getTime(), endDate.getTime(), flags);