在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,系统默认的语言环境?

Solutions Collecting From Web 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]);