Java语言环境和日期格式
我就是不明白。有一个网站只支持英语和德语。用户还可以选择指定自己的国家,以便日期、数字和其他特定于语言环境的数据以适当的格式显示 区域设置生成为Java语言环境和日期格式,java,locale,Java,Locale,我就是不明白。有一个网站只支持英语和德语。用户还可以选择指定自己的国家,以便日期、数字和其他特定于语言环境的数据以适当的格式显示 区域设置生成为Locale Locale=new Locale(lang,country)。日期的格式如下: DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, locale); System.out.println("Date " + df.format(calendar.getTime()));
Locale Locale=new Locale(lang,country)
。日期的格式如下:
DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, locale);
System.out.println("Date " + df.format(calendar.getTime()));
今天是2013年11月26日,以下是人们根据自己的国家和选择的语言所看到的情况:
11/26/13
看到一个来自我们的人在看英文页面,localeen_US
,ok26/11/13
看到一个来自英国的人在看英文页面,localeen_GB
,ok11/26/13
看到一个来自法国的人在看英文页面,地点en_FR
,错了26/11/13
(这里的法国人同意我的观点),因为日期格式是特定于国家的,不是吗?我错过了什么
更新
问题很简单:为什么区域设置(“en”、“FR”)生成错误的日期格式
更新2
如果有人能解释一下(作为一个简单的回答)为什么Java在使用最新格式时没有考虑到国家,我将不胜感激。在我看来,这种格式纯粹是国家特定的。英语在法国不是官方语言,所以在任何JVM中都没有针对法国英语的特定设置。结果,您的语言环境更改为英语(
en
,默认实现为en_US
)。你可以找到完整的解释
您可以找到JDK 7和JRE 7中支持的所有语言环境,没有en_FR
one
更新2如果有人能解释(作为一个简单的回答)为什么Java在使用最新格式时没有考虑到国家,我将不胜感激,因为(在我的观点中)这种格式完全是国家特有的
日期格式可能是特定于国家/地区的,但您正在创建预定义(非动态创建)的
Locale
对象。如果JVM没有实现localeen_FR
,那么它就不能返回locale
,这是部分英语部分法语的混合。它只返回一些指定的对象-最近的对象是en
。这只是它的实现方式。如果它返回fr
one,那么用户可能不会感到不舒服,因为他想用某种英语
方言显示页面。英语在法国不是官方语言,因此在任何JVM中都没有针对法国英语的特定设置。结果,您的语言环境更改为英语(en
,默认实现为en_US
)。你可以找到完整的解释
您可以找到JDK 7和JRE 7中支持的所有语言环境,没有en_FR
one
更新2如果有人能解释(作为一个简单的回答)为什么Java在使用最新格式时没有考虑到国家,我将不胜感激,因为(在我的观点中)这种格式完全是国家特有的
日期格式可能是特定于国家/地区的,但您正在创建预定义(非动态创建)的
Locale
对象。如果JVM没有实现localeen_FR
,那么它就不能返回locale
,这是部分英语部分法语的混合。它只返回一些指定的对象-最近的对象是en
。这只是它的实现方式。如果它返回fr
one,那么用户可能不会感到不舒服,因为他想用某种English
方言显示页面。用于查找特定于语言环境的对象的LocaleServiceProviderPool
最终使用java.util.locale#equals
来确定它是否匹配。它没有区分“只关心语言”或“只关心国家”的功能。在法国,英语没有预先定义,因此它恢复为默认值。用于查找特定于区域设置的对象的LocaleServiceProviderPool
最终使用java.util.locale#equals
来确定它是否匹配。它没有区分“只关心语言”或“只关心国家”的功能。法国没有为英语预先定义的功能,因此它恢复为默认功能。您的问题很不清楚。我已经读了很多遍了,但我仍然不能100%确定你在做什么。您是否阅读了所使用方法的文档?en_FR可能表示用户是居住在法国的美国人。@Izmaki,我当然已经读过了。语言是英语,国家是法国,在这种情况下,您希望使用什么日期格式?我得到的是错误的。@Osw-基于,声音en\u FR
将返回到en\u US
“错误”取决于编写规范的人。在这种情况下,苹果说它是对的。@HotLicks-它实际上是Java;这与苹果无关。你的问题很不清楚。我已经读了很多遍了,但我仍然不能100%确定你在做什么。您是否阅读了所使用方法的文档?en_FR可能表示用户是居住在法国的美国人。@Izmaki,我当然已经读过了。语言是英语,国家是法国,在这种情况下,您希望使用什么日期格式?我得到的是错误的。@Osw-基于,声音en\u FR
将返回到en\u US
“错误”取决于编写规范的人。在这种情况下,苹果说它是对的。@HotLicks-它实际上是Java;这与苹果公司无关。我仍然不明白为什么纯粹的国家特定地区的部分需要回归到英语。@Osw JVM试图使用法国使用的英语方言。如果没有这样的方言(Locale
)-它使用en
Locale(默认情况下)扩展到en_-US
,但仍然不明白为什么纯国家特定的区域设置部分需要退回到英语