【发布时间】: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