Java一周中的每一天,每个区域设置2个字母

Java一周中的每一天,每个区域设置2个字母,java,localization,locale,Java,Localization,Locale,有没有办法把一周中的几天写成两封信 苏、莫、图、我们 我尝试了Java DateFormatSymbols,它给出了3个字母的短名称 DateFormatSymbols symbols = new DateFormatSymbols(this.locale); symbols.getShortWeekdays(); 我还尝试使用日历类,如下所示 Calendar cal = Calendar.getInstance(); DateFormat dayFormat =

有没有办法把一周中的几天写成两封信

苏、莫、图、我们

我尝试了Java DateFormatSymbols,它给出了3个字母的短名称

   DateFormatSymbols symbols = new DateFormatSymbols(this.locale);
   symbols.getShortWeekdays();
我还尝试使用日历类,如下所示

    Calendar cal = Calendar.getInstance();
    DateFormat dayFormat = new SimpleDateFormat("EE", this.locale);
    for (int i = 0; i < 7; i++) {
        cal.set(Calendar.DAY_OF_WEEK, i);
        System.out.println(dayFormat.format(cal.getTime()));
    }
Calendar cal=Calendar.getInstance();
DateFormat dayFormat=新的SimpleDateFormat(“EE”,this.locale);
对于(int i=0;i<7;i++){
校准设置(日历日/周,i);
System.out.println(dayFormat.format(cal.getTime());
}

但总有3个信日。我无法使用子字符串,因为它将取决于区域设置。

看起来像,这将使您能够自己(大概)将它们设置为您喜欢的任何值。但这并不理想,甚至不是自动的。

最好的方法是获取3个字母的字符串,并将其传递给一个switch case或if-else-if语句,以返回所需的2个字母的字符串,如下所示

 public static String getTwoLetters(){
    String threeLetterDay = null;
    switch (threeLetterDay) {
        case "Sun":
            return "Su";
        case "Mon":
            return "Mo";
        case "Tue":
            return "Tu";
        case "Wed":
            return "We";
        case "Thu":
            return "Th";
        case "Fri":
            return "Fr";
        default:
            //if none of the above then it must be this one Sat
            return "Sa";
    }
}

我需要为每个区域设置它。因此,设置值并不能解决我的问题。它显示为
DateFormatSymbols
shortWeekdays
默认值为3(尽管它没有明确指出在任何地方)。你是在问每种语言环境下从哪里可以得到这两个字母字符串吗?谢谢你的回复。是的,我需要每个区域设置2个字母的日期字符串。将更新原始问题。我需要为每个区域设置获取它。所以这对我的问题不起作用。那么就用一个子字符串。字符串twoLetterDay=threeLetterDay.substring(子字符串有效吗?twoDay=threeDay.substring(threeDay.length-3,threeDay.length-1);我无法使用子字符串,因为它将取决于区域设置。是的,也有参数。请检查长度,然后使用子字符串?我看不出其中有任何问题。