【问题标题】:SimpleDateFormat not returning uppercase formatted dateSimpleDateFormat 不返回大写格式的日期
【发布时间】:2015-06-26 18:13:13
【问题描述】:

我正在尝试使用 SimpleFormattedDate 类在我的 Android 应用程序中获取自定义格式的日期,但我找不到返回大写字母的模式。

这些是我的代码行:

Date today = new Date();

Locale loc = new Locale("it","IT");//Locale.ITALIAN
SimpleDateFormat formatter = new SimpleDateFormat("EEE, MMM d, ''yy", loc);
String output = formatter.format(today);
Toast.makeText(getActivity(), output,Toast.LENGTH_LONG).show();

但这是我得到的回报:

ven, giu 26, '15

但我想获得这个:

Ven, 26 Giu 2015

【问题讨论】:

  • 意大利语中的月份和日期名称通常是大写的吗?
  • 您需要自己将字母大写。我建议将其拆分为多个字符串并自己将第一个字符大写。然后,您可以按正确的顺序组合字符串。
  • 只需使用 Locale.ENGLISH 而不是 Locale.ITALIAN

标签: android date-format simpledateformat


【解决方案1】:

首先你的格式化程序应该是:

 SimpleDateFormat formatter = new SimpleDateFormat("E , d MMM yyyy",loc);

意大利语的大写规则可能会有所不同,如果您仍想更改它,一种选择是使用 apache commons 中的 wordutils,将 de 依赖项添加到您的 gradle.build

编译'org.apache.commons:commons-lang3:3.4'

然后就这样做:

output=WordUtils.capitalize(output);
Toast.makeText(this, output,Toast.LENGTH_LONG).show();

【讨论】:

    【解决方案2】:

    您可以通过设置它使用的 DateFormatSymbols 来更改 SimpleDateFormat 输出的字符串。官方教程中包含this的例子

    教程中的示例,适用于工作日短

    String[] capitalDays = {
        "", "SUN", "MON",
        "TUE", "WED", "THU",
        "FRI", "SAT"
    };
    symbols = new DateFormatSymbols( new Locale("en", "US"));
    symbols.setShortWeekdays(capitalDays);
    
    formatter = new SimpleDateFormat("E", symbols);
    result = formatter.format(new Date());
    System.out.println("Today's day of the week: " + result);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-05
      • 2020-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多