在java中,我有两个包含日期和时间的日历对象。两个日历对象都在同一天,但会有不同的时间。我怎样才能格式化看起来像这个例子:如何在java中设置日期范围的格式?
周三2013年11月8日10时00 AM-11:00AM
感谢。
在java中,我有两个包含日期和时间的日历对象。两个日历对象都在同一天,但会有不同的时间。我怎样才能格式化看起来像这个例子:如何在java中设置日期范围的格式?
周三2013年11月8日10时00 AM-11:00AM
感谢。
您应该使用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());
}
只是一件事 - SimpleDateFormat不是线程安全的(它实际上存储了前一次调用的数据),如果访问不正确,可能会导致非常奇怪的输出。一般来说,最好在每次运行格式化程序时创建一个新实例,以避免出现此问题(字符串格式可以全局保存) –
@ Clockwork-Muse谢谢!我修改了代码以符合您的建议。 –
...呃,Java编码标准建议每行只有一个声明。 –
我会建议DateUtils:
String range = DateUtils.formatDateRange(mContext, startDate.getMillis(), endDate.getMillis(), DateUtils.FORMAT_ABBREV_TIME);
(starDate日期和结束日期是从jodaTime,如果你使用“日期”你需要通过日历将其转换为毫秒)
你有没有尝试过任何东西? –