如何在java中格式化日期范围?

时间:2013-11-02 22:35:40

标签: java android date datetime calendar

在java中,我有两个包含日期和时间的日历对象。两个日历对象都在同一天,但会有不同的时间。我如何将其格式化为如下例所示:

2013年11月8日星期三上午10:00至11:00 AM

感谢。

2 个答案:

答案 0 :(得分:3)

您应该使用SimpleDateFormat来执行此操作,此处为the docs并提供示例:

String dFormat = "EEEE, MMMM d, yyyy",
       tFormat = "KK:mm a";

public String formatInterval(Date from, Date to) {
    SimpleDateFormat dateFormat = new SimpleDateFormat(dFormat),
                     timeFormat = new SimpleDateFormat(tFormat);

    StringBuilder s = new StringBuilder();
    // Day
    s.append(dateFormat.format(from));
    s.append(' ');
    // Start time
    s.append(timeFormat.format(from));
    s.append(" - ");
    // End time
    s.append(timeFormat.format(to));
    return s.toString();
}

public String formatInterval(Calendar from, Calendar to) {
    return formatInterval(from.getTime(), to.getTime());
}

答案 1 :(得分:1)

我会推荐DateUtils:

String range = DateUtils.formatDateRange(mContext, startDate.getMillis(), endDate.getMillis(), DateUtils.FORMAT_ABBREV_TIME);

(starDate和endDate来自jodaTime,如果您使用"日期"您需要通过日历将其转换为毫秒)