在年度价值观的背景下,"aaaa"与"yyyy"有何不同?

Ada*_*ron 5 java simpledateformat

参考SimpleDateFormat文档,表示年份的模式字符是y,所以我们有像yyyyyy(13,2013分别)的表示.没关系.

当我输出DEFAULT/ SHORT/ MEDIUM/ LONG/ FULL,大部分地方的模式,我得到的东西沿着这些路线:

(EG:新西兰)

Default: d/MM/yyyy
Short: d/MM/yy
Medium: d/MM/yyyy
Long: d MMMM yyyy
Full: EEEE, d MMMM yyyy
Run Code Online (Sandbox Code Playgroud)

然而,看一些地方,例如法国,我得到这个:

Default: j MMM aaaa
Short: jj/MM/aa
Medium: j MMM aaaa
Long: j MMMM aaaa
Full: EEEE j MMMM aaaa
Run Code Online (Sandbox Code Playgroud)

显然这里aaaa是年份的代表,但是yyyy和... 之间的意图区别是aaaa什么?IE:为什么他们使用aaaa而不是仅仅yyyy.

最初我认为它可能是法语的一部分,因为"[y] ear"是"[a]nnée"(而"[d] ay"是"[j]我们的",但我也看到它也aaaa适用于匈牙利语(和许多其他地方),匈牙利语为"年"是"év"(日"午睡"),所以我认为我正在做的"a"/"année"相关是巧合.

那么应该在这里推断出的差异是什么?

我用Google搜索,但画了一个空白.对于Java开发人员而言,它可能显而易见,但我只是一个CFML开发人员,当Java比我在原生CFML中做得更方便时,他偶尔会将Java固定到我的CFML中.如果这是一个愚蠢的问题,那很抱歉.

Mur*_*nik 4

如果您查看,java.text.DateFormatSymbols您会发现以下字段:

/**
 * Localized date-time pattern characters. For example, a locale may
 * wish to use 'u' rather than 'y' to represent years in its date format
 * pattern strings.
 * This string must be exactly 18 characters long, with the index of
 * the characters described by <code>DateFormat.ERA_FIELD</code>,
 * <code>DateFormat.YEAR_FIELD</code>, etc.  Thus, if the string were
 * "Xz...", then localized patterns would use 'X' for era and 'z' for year.
 * @serial
 */
String  localPatternChars = null;
Run Code Online (Sandbox Code Playgroud)

这是一个字符串,其中按预定义的顺序包含每个格式元素的字符(例如,字符 0 是纪元格式字符,字符 1 是年份格式字符等)。

该字段是从sun.text.resources.FormatData资源包(当然,每个区域设置)中的DateTimePatternChars键加载的。

如果您检查sun.text.resources.FormatData_fr资源,您将找到键值对{ "DateTimePatternChars", "GaMjkHmsSEDFwWxhKzZ" }

长话短说 - 法国语言环境中的“a”格式字符与美国语言环境中的“y”格式字符具有完全相同效果,只是调用方式不同。