如何获取某个区域/国家/地区的第一天

问题描述 投票:4回答:2

我需要获得某个地区/国家/地区的第一天。

我试图使用此代码找到它:

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

java date calendar locale
2个回答
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);

输出:

星期一

星期一

星期日

星期一

星期一

星期日

星期日


3
投票

你在初始化Locale时犯了一个错误,你需要通过两个参数语言和国家。单个参数构造函数仅用于语言。

例如对于Locale("en_GB"),应该是Locale("en", "GB"),然后结果将是2。

对于Locale("en", "US")来说,结果是1(星期日)。

© www.soinside.com 2019 - 2024. All rights reserved.