javascript - Date.toLocaleString() 返回无效的语言标签 : en_GB but Java. util.Locale 类返回 en_GB 英国语言环境

标签 javascript java

Java.util.Locale 返回英国的“en_GB”区域设置格式。当我在此 Date.toLocaleString() 函数中使用相同的语言环境时,该函数返回 Invalid language tag: en_GB 。我只是想知道为什么 java 和 javascript 的行为不同以及最好的解决方案是什么

最佳答案

I just want to know why java and javascript behaving differently

因为它们是不同的语言,每种语言都有自己的决定。

诚然,有标准的 BCP 47 来识别语言,但遗憾的是 Java 选择不使用它。

但是,java.util.Locale 是一个类,因此它本身不会“返回”任何内容。您所观察到的是让某些东西自动将 java.util.Locale 类的对象转换为 String 的结果。这是通过调用类的 toString() 方法来完成的,该方法给出结果 en_GB。

再次遗憾的是,toString() 方法本来可以实现生成 BCP 47 标准以外的任何内容,但 BCP 47 于 2009 年发布,Java 的 java.util.Locale 于 1997 年发布。自它存在以来就一直在使用它,没有人希望这些程序因任意改变方法的行为而被破坏。

总之,虽然期望尽最大努力实现最少意外原则是有值(value)的,但在期望特定格式时盲目依赖默认自动选择的转换仍然是一个相当糟糕的做法。 (毕竟,此讨论是关于指定一种语言,以便使用该语言正确设置日期格式。)

and what is the best solution for this

调用toLanguageTag()

关于javascript - Date.toLocaleString() 返回无效的语言标签 : en_GB but Java. util.Locale 类返回 en_GB 英国语言环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55041104/

相关文章:

javascript - 如何通过父 id-s 加深数组 (JavaScript)

java - 将错误堆栈发送到方法

java - 诱惑报告: Failed test written with Citrus displayed as ‘Broken’

java - Spring Controller 生成的 JSON 内容无效(使用 Jackson 库)

javascript - 有没有办法用假计时器运行 Ember.Testing 验收测试?

javascript - Angular JS : Show get Json by value

javascript - 在 react native 应用程序上运行 expo run 时出错

javascript - 按钮文本不显示在 safari 中,显示在 chrome 中

java - Spring MVC/Hibernate/mySQL "read"始终为空

java - 如何在 LoadingCache 中有效存储可能具有多个键的对象