最简单的方法:
String[] namesOfDays = new String[7] {
"SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"
};
此方法不使用Locale。因此,如果系统的语言不是英语,则此方法无法正常工作。
使用Joda时间,我们可以这样做:
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"
等字符串吗?
答案 0 :(得分:46)
如果我没有误解你
calendar.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.SHORT, Locale.US);
正是您要找的。 Here您可以找到文档,
或者您也可以使用getShortWeekdays()
String[] namesOfDays = DateFormatSymbols.getInstance().getShortWeekdays()
答案 1 :(得分:8)
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);
您可以使用所需的日期和时间创建日期。并实现你想要的。
答案 2 :(得分:4)
DayOfWeek.MONDAY.getDisplayName(
TextStyle.SHORT ,
Locale.getDefault()
)
现在位于Joda-Time的maintenance mode项目建议迁移到java.time类。大部分java.time被反向移植到Android(见下文)。
DayOfWeek
DayOfWeek
枚举定义了七个对象,每个星期一个。该类提供了几种方便的方法,包括getDisplayName
,以生成具有本地化日期名称的字符串。
要进行本地化,请指定:
示例:
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 8及更高版本中。这些类取代了麻烦的旧legacy日期时间类,例如java.util.Date
,Calendar
和&amp; SimpleDateFormat
现在位于Joda-Time的maintenance mode项目建议迁移到java.time类。
要了解详情,请参阅Oracle Tutorial。并搜索Stack Overflow以获取许多示例和解释。规范是JSR 310。
从哪里获取java.time类?
答案 3 :(得分:0)
在没有1.8版本的情况下,您可以使用DateFormatSymbols
(也适用于Android)。
DateFormatSymbols.getWeekdays()
返回:工作日字符串。使用Calendar.SUNDAY,Calendar.MONDAY, 等等,以对结果数组建立索引。
答案 4 :(得分:0)
我认为我的代码很有用。您可以根据自己的目的轻松更改它。
结果字符串数组为“星期六”,“星期日”,“星期一”,“星期二”,“星期三”,“星期四”和“星期五”。
public String[] getNameOfDays(){
SimpleDateFormat sdf_day_of_week = new SimpleDateFormat("EEE", Locale.getDefault());
String[] nameOfDays = new String[7];
Calendar calendar = Calendar.getInstance();
for(int i=0; i<7; i++) {
calendar.set(Calendar.DAY_OF_WEEK, i);
nameOfDays[i] = sdf_day_of_week.format(calendar.getTime());
}
return nameOfDays;
}
答案 5 :(得分:0)
public class daysOfWeek {
public static String days(String s, int k) {
String[] days = new String[] {"Mon","Tue","Wed","Thu","Fri","Sat","Sun"};
int len = days.length;
int index = 0;
int result = 0;
for(int i=0; i<len; i++) {
if(days[i]==s) {
index =i;
k%=7;
result = (index +k)%7;
}
}
return days[result];
}
public static void main(String args[]) {
String S ="Tue"; int k =25;
String s =days(S,k);
System.out.println(s);
}
}
答案 6 :(得分:-1)
请试试这个
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]);