GCT1015
TL;DR:调用此辅助方法,它返回YMD、DMY或MDY。public static String getDateFieldOrder(Locale locale) { SimpleDateFormat fmt = ((SimpleDateFormat) DateFormat.getDateInstance(DateFormat.SHORT, locale)); return fmt.toPattern().replaceAll("[^yMd]|(?<=(.))\\1", "").toUpperCase();}要获取字段顺序,请请求一个DateFormat,并分析用于构建它的模式:SimpleDateFormat fmt = ((SimpleDateFormat) DateFormat.getDateInstance(DateFormat.SHORT, locale));String pattern = fmt.toPattern();这会给你这样的模式:dd.MM.yyM/d/yyy-MM-ddd. M. y因此,删除非字母和重复字母:pattern = pattern.replaceAll("\\P{L}", "").replaceAll("(.)\\1+", "$1");要查看潜在结果,您可以运行此代码 (Java 5+):Map<String, Set<String>> map = new TreeMap<String, Set<String>>();for (Locale locale : Locale.getAvailableLocales()) { SimpleDateFormat fmt = ((SimpleDateFormat) DateFormat.getDateInstance(DateFormat.SHORT, locale)); String pattern = fmt.toPattern().replaceAll("\\P{L}", "").replaceAll("(.)\\1+", "$1"); Set<String> set = map.get(pattern); if (set == null) map.put(pattern, set = new TreeSet<String>()); set.add(locale.getDisplayName(Locale.US));}for (Entry<String, Set<String>> entry : map.entrySet()) System.out.println(entry.getKey() + " = " + entry.getValue());样本输出(Java 11)如果需要,您也可以删除G和r模式字母。而不是replaceAll("\\P{L}", ""),使用replaceAll("[^yMd]", "")。toUpperCase()如果您喜欢YMD,DMY和 之类的值,当然可以调用MDY。