在Java中,我有两个日历对象,它们包含日期和时间。这两个日历对象在同一天,但时间不同。如何将其格式化为以下示例:
星期三,2013年11月8日 10:00AM-11:00AM
谢谢。
星期三,2013年11月8日 10:00AM-11:00AM
谢谢。
SimpleDateFormat
来完成它,这里有文档和一个示例: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());
}
SimpleDateFormat
不是线程安全的(它实际上存储了上一个调用的数据),如果访问不正确,可能会导致极其奇怪的输出。一般来说,最好每次运行格式化程序时创建一个新实例,以避免这个问题(字符串格式可以全局保存)。 - Clockwork-MuseString range = DateUtils.formatDateRange(mContext, startDate.getMillis(), endDate.getMillis(), DateUtils.FORMAT_ABBREV_TIME);
starDate和endDate来自jodaTime,如果你使用“Date”,则需要通过Calendar将其转换为毫秒。