【发布时间】:2018-09-17 10:01:29
【问题描述】:
我需要获取某个区域/国家/地区的一周的第一天。
我尝试使用以下代码找到它:
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,即星期一。
【问题讨论】:
-
我原以为美国是星期天,但英国和法国是星期一。
-
Calendar类早已过时,而且设计总是很糟糕。你需要WeekFields.of(locale).getFirstDayOfWeek()。 -
这对我有用:
Locale.forLanguageTag("en-GB")(注意连字符而不是下划线)。文档:Creating a Locale.