代码之家  ›  专栏  ›  技术社区  ›  Daniel Trebbien

如何在应用程序中包含足够的区域设置数据,以便能够在三个区域设置中格式化日期?

  •  0
  • Daniel Trebbien  · 技术社区  · 15 年前

    我想能格式化 java.util.Date 对象的“长”英文、西班牙语和德语日期格式。“long”是指与 LONG 样式模式常量 java.text.DateFormat :

    DateFormat.getDateInstance(DateFormat.LONG, myLocale).format(myDate);
    

    November 22, 2010
    22 de noviembre de 2010
    22. November 2010
    

    November 22, 2010
    2010 11 22
    2010 11 22
    

    1 回复  |  直到 15 年前
        1
  •  0
  •   Paweł Dyda    15 年前

    首先,jre中的日期格式以许多地区的错误行为而闻名(无效的波兰语、捷克语和俄语长日期、无效的波兰语短日期;这只是我确信知道的示例)。所以我不太相信这个信息来源。

    如果要实现自己的长日期格式逻辑,我将执行以下操作:

    String spanishDatePattern = "{0,number,00} {1} {2,number,####}";
    String spanishLongDateMonthNameNovember = "de noviembre de";
    
    Object[] arguments = { new Integer(date.getDate()),
                           spanishLongDateMonthNameNovember,
                           new Integer(date.getYear()) };
    String formattedDate = MessageFormat.format(spanishDatePattern,
                    arguments);
    

    在这种情况下,每种语言需要13条消息(12个月的名称和1个模式)。不多,我相信。

    当然,这只是一个例子,实际上,您可能还需要添加逻辑来解析月份名称(具有名称以月份号结尾的键,即longdateformatonmonthname.0=January?).