在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,如果你使用「日期」你需要通過日曆將其轉換爲毫秒)
你有沒有嘗試過任何東西? –