如何获取特定地区/国家/地区的每周第一天

时间:2018-09-17 10:01:30

标签: java date calendar locale

我需要获取特定地区/国家/地区的每周第一天。

我尝试使用以下代码找到它:

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,即星期一。

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(星期日)。