2013-11-02 30 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,如果你使用“日期”你需要通过日历将其转换为毫秒)