最简单的方法:
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"
与系统的默认语言环境?
如果我没有误会你
calendar.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.SHORT, Locale.US);
是你在找什么。 在这里 ,你可以找到的文件,
或者你也可以使用, 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);
你可以用你想要的日期和时间创建的日期。 并达到你想要什么。
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.Date
, Calendar
,和SimpleDateFormat
。
该乔达-时间的项目,现在在维护模式 ,建议迁移到java.time类。
要了解更多信息,请参阅甲骨文教程 。 和搜索堆栈溢出了很多例子和解释。 规范是JSR 310 。
从哪里获取java.time类?
- 的Java SE 8和SE 9和后
- 内置。
- 具有捆绑实现标准Java API的一部分。
- Java的9增加了一些小的功能和修复。
- Java SE 6中和SE 7
- 多的java.time功能后移植到Java 6和7在ThreeTen-反向移植 。
- Android的
- 所述ThreeTenABP项目适应于Android ThreeTen-反向移植 (上面提到的)特异性。
- 请参阅如何使用ThreeTenABP ... 。
如果没有1.8,你可以使用DateFormatSymbols
(这也适用于Android)。
DateFormatSymbols.getWeekdays()
返回:星期字符串。 使用Calendar.SUNDAY,Calendar.MONDAY等来索引结果阵列。
请试试这个
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)