javascript - Date.toLocaleString() 返回无效的语言标签:en_GB 但 Java.util.Locale 类返回英国的 en_GB 语言环境
问题描述
Java.util.Locale 返回英国的“en_GB”语言环境格式。当我在返回 Invalid language tag: en_GB 的 Date.toLocaleString() 函数中使用相同的语言环境时。我只想知道为什么 java 和 javascript 的行为不同,什么是最好的解决方案
解决方案
我只想知道为什么 java 和 javascript 的行为不同
因为它们是不同的语言,各自做出自己的决定。
诚然,有标准的 BCP 47 来识别语言,遗憾的是 Java 选择不使用它。
但是,java.util.Locale 是一个类,因此它不会自行“返回”任何内容。您正在观察的是让某些东西自动将 java.util.Locale 类的对象转换为 String 的结果。这是通过调用类的 toString() 方法完成的,该方法给出结果 en_GB。
再次遗憾的是,toString() 方法将被实施以产生除 BCP 47 标准之外的任何东西,但 BCP 47 于 2009 年发布,Java 的 java.util.Locale 于 1997 年发布。一些程序被制作为使用它自从它存在以来,没有人希望这些程序通过任意改变方法的行为来破坏。
总之,尽管期望尽最大努力实现最小意外原则是有价值的,但在期望特定格式时盲目依赖默认自动选择的转换仍然是一种相当糟糕的做法。(毕竟,这个讨论是关于指定一种语言,以便使用这种语言正确格式化日期。)
什么是最好的解决方案
称呼toLanguageTag()
推荐阅读
- python - 从 JSONS 列表中提取数据的问题
- c# - c#,winforms中如何将手机摄像头或其他摄像头连接到图片框?
- c++11 - libxl 库在 C++ 中的使用
- jquery - 为什么鼠标悬停和鼠标悬停时动画不会重复
- node.js - AWS lambda 调用 Facebook SDK 失败
- ruby-on-rails - 识别升序和降序或范围
- reporting-services - SSRS 参数的日期选择器(日历图标)未显示在 Microsoft Edge 中
- gridview - 如何从 Xamarin 表单应用程序中的 GridView 获取所选项目
- angular - 如何在测试套件中模拟和监视命名空间?
- java - 使用 new 运算符在 Java 中进行整数缓存