Date.toLocaleString()返回无效的语言标记:en_GB但Java.util.Locale类返回英国的en_GB语言环境

问题描述 投票:0回答:1

Java.util.Locale返回UK的“en_GB”语言环境格式。当我在这个Date.toLocaleString()函数中使用相同的语言环境时返回无效的语言标记:en_GB。我只是想知道为什么java和javascript表现不同,这是什么最好的解决方案

javascript java
1个回答
1
投票

我只是想知道为什么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()

© www.soinside.com 2019 - 2024. All rights reserved.