在Java中,如何使用系统的默认语言环境(语言)获取星期几(星期日,星期一,…,星期六)

最简单的方法是:

String[] namesOfDays = new String[7] { "SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT" }; 

此方法不使用语言环境。 因此,如果系统的语言不是英文,这种方法不能正常工作。

使用乔达时间,我们可以这样做:

 String[] namesOfDays = new String[7]; LocalDate now = new LocalDate(); for (int i=0; i<7; i++) { /* DateTimeConstants.MONDAY = 1, TUESDAY = 2, ..., SUNDAY = 7 */ namesOfDays[i] = now.withDayOfWeek((DateTimeConstants.SUNDAY + i - 1) % 7 + 1) .dayOfWeek().getAsShortText(); } 

但是,这种方法使用今天的date和日历计算,这对最终目的是没用的。 另外,它有点复杂。

是否有一种简单的方法来获得像Sun,Mon,…,Sat这样的string,系统默认的语言环境?

    Related of "在Java中,如何使用系统的默认语言环境(语言)获取星期几(星期日,星期一,…,星期六)"

    如果我没有误解你的话

      calendar.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.SHORT, Locale.US); 

    是你在找什么。 在这里你可以find文件,

    或者你也可以使用getShortWeekdays()

     String[] namesOfDays = DateFormatSymbols.getInstance().getShortWeekdays() 
     Date now = new Date(); // EEE gives short day names, EEEE would be full length. SimpleDateFormat dateFormat = new SimpleDateFormat("EEE", Locale.US); String asWeek = dateFormat.format(now); 

    你可以创build你想要的date和时间的date。 并实现你想要的。

    TL;博士

     DayOfWeek.MONDAY.getDisplayName( TextStyle.SHORT , Locale.getDefault() ) 

    java.time

    Joda-Time项目现在处于维护模式 ,build议迁移到java.time类。 大部分java.time被移植到Android(见下文)。

    DayOfWeek

    DayOfWeek枚举定义了七个对象,每个星期一个对象。 该类提供了几个方便的方法,包括getDisplayName生成一个string与本地化的date名称。

    要本地化,请指定:

    • TextStyle来确定string应该多长或缩短多less。
    • (a)确定(a)用于翻译date名称,月份名称等的人类语言,以及(b)用于确定缩写,大写,标点,分隔符等问题的文化规范。

    例:

     String output = DayOfWeek.MONDAY.getDisplayName( TextStyle.SHORT , Locale.CANADA_FRENCH ); 

    您可以使用JVM的当前默认时区而不是指定一个。 但要记住这个风险:默认区域可以在运行期间的任何时刻被JVM中运行的任何应用程序的任何线程中的任何代码改变。

     Locale locale = Locale.getDefault() ; String output = DayOfWeek.MONDAY.getDisplayName( TextStyle.SHORT , locale ); 

    关于java.time

    java.time框架内置于Java 8及更高版本中。 这些类取代了麻烦的旧的遗留date时间类,如java.util.DateCalendarSimpleDateFormat

    Joda-Time项目现在处于维护模式 ,build议迁移到java.time类。

    要了解更多信息,请参阅Oracle教程 。 并search堆栈溢出了很多例子和解释。 规范是JSR 310 。

    从何处获取java.time类?

    • Java SE 8SE 9及更高版本
      • 内置。
      • 带有捆绑实现的标准Java API的一部分。
      • Java 9增加了一些小function和修复。
    • Java SE 6SE 7
      • 大部分的java.timefunction都被移植到了ThreeTen-Backport中的 Java 6&7中。
    • Android的
      • ThreeTenABP项目专门针对Android,采用了ThreeTen-Backport (上文提到)。
      • 请参阅如何使用ThreeTenABP …。

    请试试这个

     public static String[] namesOfDays = {"SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"}; int day = Calendar.getInstance().get(Calendar.DAY_OF_WEEK); System.out.println("Day := "+namesOfDays[day-1]);