6

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

当我为大多数语言环境输出DEFAULT/ SHORT/ MEDIUM/ LONG/模式时,我得到了以下几点:FULL

(例如:新西兰)

Default: d/MM/yyyy
Short: d/MM/yy
Medium: d/MM/yyyy
Long: d MMMM yyyy
Full: EEEE, d MMMM yyyy

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

Default: j MMM aaaa
Short: jj/MM/aa
Medium: j MMM aaaa
Long: j MMMM aaaa
Full: EEEE j MMMM aaaa

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

最初我认为它可能类似于法语的“[y]ear”是“[a]nnée”(而“[d]ay”是“[j]our”,但我认为它也aaaa适用于匈牙利语(和许多其他语言环境),匈牙利语中的“年”是“év”(日“午睡”),所以我认为我正在制作的“a”/“annee”相关性是巧合。

那么人们应该在这里推断出什么区别呢?

我用谷歌搜索了一下,但画了一个空白。对于 Java 开发人员来说,这可能与显而易见的事情一样明显,但我只是一个 CFML 开发人员,当 Java 做的事情比我在本机 CFML 中做的更方便时,我只是偶尔将 Java 插入我的 CFML。很抱歉,如果这是一个愚蠢的问题。

4

1 回答 1

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;

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

该字段是从sun.text.resources.FormatData资源包(当然,每个语言环境)从DateTimePatternChars键中加载的。

如果您检查sun.text.resources.FormatData_fr资源,您会发现键值对{ "DateTimePatternChars", "GaMjkHmsSEDFwWxhKzZ" }

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

于 2013-10-03T08:36:44.687 回答