在Java中,如何让周(周日,周一,...,周六)的天弦与系统的默认语言环境(语言)(In Java

2019-09-03 02:27发布

最简单的方法:

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();
}

然而,这种方法使用今天的日期和日历计算,这是无用的最终目的。 此外,它是一个有点复杂。

是否有一个简单的方法来得到这样的字符串"Sun""Mon" ,......, "Sat"与系统的默认语言环境?

Answer 1:

如果我没有误会你

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

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

或者你也可以使用, getShortWeekdays()

String[] namesOfDays = DateFormatSymbols.getInstance().getShortWeekdays()


Answer 2:

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);

你可以用你想要的日期和时间创建的日期。 并达到你想要什么。



Answer 3:

TL;博士

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

java.time

该乔达-时间的项目,现在在维护模式 ,建议迁移到java.time类。 许多java.time是背移植到Android(见下文)。

DayOfWeek

DayOfWeek枚举定义了七个对象,每天一个-的一周。 这个类提供了几个方便的方法,包括getDisplayName生成具有本地化天名的字符串。

要本地化,指定:

  • TextStyle ,以确定多长时间或缩写应的字符串。
  • Locale来确定(一)一天的名称翻译的人类语言,一个月的名称,这样,和(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和更高版本。 这些类取代麻烦的老传统日期时间类,如java.util.DateCalendar ,和SimpleDateFormat

该乔达-时间的项目,现在在维护模式 ,建议迁移到java.time类。

要了解更多信息,请参阅甲骨文教程 。 和搜索堆栈溢出了很多例子和解释。 规范是JSR 310 。

从哪里获取java.time类?

  • 的Java SE 8SE 9和后
    • 内置。
    • 具有捆绑实现标准Java API的一部分。
    • Java的9增加了一些小的功能和修复。
  • Java SE 6中SE 7
    • 多的java.time功能后移植到Java 6和7在ThreeTen-反向移植
  • Android的
    • 所述ThreeTenABP项目适应于Android ThreeTen-反向移植 (上面提到的)特异性。
    • 请参阅如何使用ThreeTenABP ...


Answer 4:

如果没有1.8,你可以使用DateFormatSymbols (这也适用于Android)。

DateFormatSymbols.getWeekdays()

返回:星期字符串。 使用Calendar.SUNDAY,Calendar.MONDAY等来索引结果阵列。



Answer 5:

请试试这个

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]);


文章来源: In Java, how to get strings of days of week (Sun, Mon, …, Sat) with system's default Locale (language)