我需要获取特定地区/国家/地区的每周第一天。
我尝试使用以下代码找到它:
final Locale[] locales = new Locale[]{
new Locale("en_GB"),
new Locale("ru_RU"),
new Locale("en_US"),
new Locale("es_ES"),
new Locale("fr_FR"),
new Locale("iw_IL"),
new Locale("he_IL")
};
for (final Locale locale : locales) {
final Calendar cal = Calendar.getInstance(locale);
final int firstDayOfWeek = cal.getFirstDayOfWeek();
System.out.println(firstDayOfWeek);
}
此代码的结果是所有这些语言环境都在检索“ 1”,即星期日,而en_US
之类的语言环境应返回2,即星期一。
答案 0 :(得分:9)
分别输入两个参数-语言和国家/地区-而不是带下划线的字符串。参见Oracle Tutorial。
final Locale[] locales = new Locale[]{
new Locale("en", "GB"), // Pass language code, then country code, separately.
new Locale("ru", "RU"),
new Locale("en", "US"),
new Locale("es", "ES"),
new Locale("fr", "FR"),
new Locale("iw", "IL"),
new Locale("he", "IL")
};
然后我将使用Java8获得一周的第一天:
DayOfWeek firstDayOfWeek = WeekFields.of(locale).getFirstDayOfWeek();
System.out.println(firstDayOfWeek);
输出:
星期一
星期一
SUNDAY
星期一
星期一
SUNDAY
SUNDAY
答案 1 :(得分:3)
您在初始化Locale
时出错,您需要传递两个参数语言和国家/地区。单个参数构造函数仅适用于语言。
例如对于Locale("en_GB")
,应为Locale("en", "GB")
,然后结果将为2。
Locale("en", "US")
的BTW结果为1(星期日)。