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