加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 在年份值的上下文中,“aaaa”与“yyyy”有何不同?

发布时间:2020-12-14 19:36:50 所属栏目:Java 来源:网络整理
导读:参考 SimpleDateFormat docs,表示年份的模式字符是y,因此我们有yy和yyyy(2013年分别为2013年)的表示.没关系. 当我输出大多数语言环境的DEFAULT / SHORT / MEDIUM / LONG / FULL模式时,我会得到以下几点: (EG:新西兰) Default: d/MM/yyyyShort: d/MM/yyMedi
参考 SimpleDateFormat docs,表示年份的模式字符是y,因此我们有yy和yyyy(2013年分别为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

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

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

显然这里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;

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

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

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读