Ada*_*ron 5 java simpledateformat
参考SimpleDateFormat文档,表示年份的模式字符是y,所以我们有像yy和yyyy(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中.如果这是一个愚蠢的问题,那很抱歉.
如果您查看,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”格式字符具有完全相同的效果,只是调用方式不同。