31

最简单的方法:

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

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

使用 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"

4

7 回答 7

58

如果我没有误解你

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

就是你要找的。在这里你可以找到文档,

或者您也可以使用getShortWeekdays()

String[] namesOfDays = DateFormatSymbols.getInstance().getShortWeekdays()
于 2013-05-14T11:03:43.180 回答
11
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);

您可以使用所需的日期和时间创建日期。并实现你想要的。

于 2013-05-14T11:10:03.057 回答
4
于 2017-03-16T05:34:10.397 回答
0

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

DateFormatSymbols.getWeekdays()

返回:工作日字符串。使用 Calendar.SUNDAY、Calendar.MONDAY 等来索引结果数组。

于 2018-07-10T05:12:23.180 回答
0

我认为我的代码很有用。您可以根据自己的目的轻松更改它。

结果字符串数组是“Sat”、“Sun”、“Mon”、“Tue”、“Wed”、“Thu”和“Fri”。

    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;
    }
于 2020-04-02T14:49:09.447 回答
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);
     }

}
于 2020-06-27T22:17:55.293 回答
-3

请试试这个

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]);
于 2013-11-23T06:46:09.687 回答