如何在java中实现自定义日期格式?

如何在java中实现自定义日期格式?,java,date-formatting,Java,Date Formatting,我想设置一个日期的格式,以包括一个特殊的“一天中的一部分”指示器-例如,“午夜”表示小时=0,“am”表示0我将使用一个作为自定义输出,使用一个DateFormat表示其余。这可以用一个简单的方法非常优雅地组合在一起 通过MessageFormat@boris的魔力,你可以使用ChoiceFormat与DateFormat相结合的spider。你能扩展它并把它写下来作为答案吗?这不完全是我希望的解决方案,但我想它比我的想法更优雅。不过,它仍然需要处理一个单独的日历对象。对于任何解决方案,您可能需

我想设置一个日期的格式,以包括一个特殊的“一天中的一部分”指示器-例如,“午夜”表示小时=0,“am”表示0我将使用一个作为自定义输出,使用一个
DateFormat
表示其余。这可以用一个简单的方法非常优雅地组合在一起


通过
MessageFormat
@boris的魔力,你可以使用
ChoiceFormat
DateFormat
相结合的
spider。你能扩展它并把它写下来作为答案吗?这不完全是我希望的解决方案,但我想它比我的想法更优雅。不过,它仍然需要处理一个单独的日历对象。对于任何解决方案,您可能需要一个
Date
Calendar
对象。使用一种方法将其粘贴到实用程序类中,该方法采用或
日历
日期
-抽象是优雅的关键。。。
    final String format = "{0,choice,0#midnight|0<am|12#noon|12<pm} {1,date,dd MMM YYYY HH:mm:ss}";
    final MessageFormat messageFormat = new MessageFormat(format);
public static void main(String args[]) {
    final Calendar calendar = Calendar.getInstance();
    final String format = "{0,choice,0#midnight|0<am|12#noon|12<pm} {1,date,dd MMM YYYY HH:mm:ss}";
    final MessageFormat messageFormat = new MessageFormat(format);

    System.out.println(messageFormat.format(new Object[]{calendar.get(Calendar.HOUR_OF_DAY), calendar.getTime()}));
    System.out.println("==== TESTS ====");
    calendar.set(Calendar.HOUR_OF_DAY, 0);
    System.out.println(messageFormat.format(new Object[]{calendar.get(Calendar.HOUR_OF_DAY), calendar.getTime()}));
    calendar.set(Calendar.HOUR_OF_DAY, 1);
    System.out.println(messageFormat.format(new Object[]{calendar.get(Calendar.HOUR_OF_DAY), calendar.getTime()}));
    calendar.set(Calendar.HOUR_OF_DAY, 11);
    System.out.println(messageFormat.format(new Object[]{calendar.get(Calendar.HOUR_OF_DAY), calendar.getTime()}));
    calendar.set(Calendar.HOUR_OF_DAY, 12);
    System.out.println(messageFormat.format(new Object[]{calendar.get(Calendar.HOUR_OF_DAY), calendar.getTime()}));
    calendar.set(Calendar.HOUR_OF_DAY, 14);
    System.out.println(messageFormat.format(new Object[]{calendar.get(Calendar.HOUR_OF_DAY), calendar.getTime()}));
}
am 08 Nov 2013 08:53:58
==== TESTS ====
midnight 08 Nov 2013 00:53:58
am 08 Nov 2013 01:53:58
am 08 Nov 2013 11:53:58
noon 08 Nov 2013 12:53:58
pm 08 Nov 2013 14:53:58