【问题标题】:How to format a date in uppercase?如何将日期格式化为大写?
【发布时间】:2013-11-07 13:16:59
【问题描述】:

我正在尝试以这种方式格式化日期:

Monday 4, November, 2013

这是我的代码:

private static String formatDate(Date date) {
  Calendar calenDate = Calendar.getInstance();
  calenDate.setTime(date);
  Calendar today = Calendar.getInstance();
  if (calenDate.get(Calendar.DAY_OF_MONTH) == today.get(Calendar.DAY_OF_MONTH)) {
    return "Today";
  }
  today.roll(Calendar.DAY_OF_MONTH, -1);
  if (calenDate.get(Calendar.DAY_OF_MONTH) == today.get(Calendar.DAY_OF_MONTH)) {
    return "Yesterday";
  }
  // Guess what buddy
  SimpleDateFormat sdf = new SimpleDateFormat("EEEEE d, MMMMM, yyyy");
  // This prints "monday 4, november, 2013" ALL in lowercase
  return sdf.format(date);
}

但我不想使用一些split 方法或做类似的事情。是不是有一些模式可以包含在正则表达式中,以使其在每个单词的开头都是大写的?

更新 我来自西班牙裔国家,比如new Locale("es", "ES") 我得到的是“martes 7, noviembre, 2013”​​,而我需要的是“Martes 7, Noviembre, 2013”​​。

【问题讨论】:

  • 您使用的是什么语言环境?美国地区应该没问题。
  • 您使用的是什么语言环境?这对我来说看起来很奇怪。尝试将格式化程序的区域设置显式设置为美国英语,最好提供一个简短但完整的程序来演示问题。
  • 我已经更新了我的问题,我需要一个西班牙语言环境,所以我使用new Locale("es", "ES")
  • 西班牙语中的月份和日期名称通常用大写字母书写吗?
  • 不正常,但客户希望这样。

标签: java date calendar formatting


【解决方案1】:

您可以通过设置DateFormatSymbols 使用它来更改SimpleDateFormat 输出的字符串。官方教程包括一个这样的例子:http://docs.oracle.com/javase/tutorial/i18n/format/dateFormatSymbols.html

复制教程中的示例,应用于“短工作日”:

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);

【讨论】:

    【解决方案2】:

    使用Locale.US,它工作正常:

    SimpleDateFormat sdf = new SimpleDateFormat("EEEEE d, MMMMM, yyyy", Locale.US);
    System.out.println(sdf.format(Date.valueOf("2013-11-07")));
    

    输出:

    Thursday 7, November, 2013
    

    【讨论】:

    • 对不起,我自己解释得不好。我来自西班牙,我没有任何 Locale.SPAIN,例如:/。如果我使用new Locale("es", "ES",我会得到类似“martes 7, noviembre, 2013”​​的信息,而我需要的是“Martes 7, Noviembre, 2013”​​。我现在正在更新问题...
    猜你喜欢
    • 1970-01-01
    • 2018-12-02
    • 2012-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多