2013-11-02 45 views
2

在java中,我有兩個包含日期和時間的日曆對象。兩個日曆對象都在同一天,但會有不同的時間。我怎樣才能格式化看起來像這個例子:如何在java中設置日期範圍的格式?

週三2013年11月8日10時00 AM-11:00AM

感謝。

+2

你有沒有嘗試過任何東西? –

回答

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

只是一件事 - SimpleDateFormat不是線程安全的(它實際上存儲了前一次調用的數據),如果訪問不正確,可能會導致非常奇怪的輸出。一般來說,最好在每次運行格式化程序時創建一個新實例,以避免出現此問題(字符串格式可以全局保存) –

+0

@ Clockwork-Muse謝謝!我修改了代碼以符合您的建議。 –

+1

...呃,Java編碼標準建議每行只有一個聲明。 –

0

我會建議DateUtils:

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

(starDate日期和結束日期是從jodaTime,如果你使用「日期」你需要通過日曆將其轉換爲毫秒)