2012-10-02 191 views
1

我希望能够将双重价格格式化为区域设置特定格式。 您可以使用下面的代码实现这一点:将货币格式化为区域设置特定格式

NumberFormat.getCurrencyInstance(locale).format(20.0); 

然而,只有21语言环境的支持,我需要支持比多个国家。能够根据ISO国家/地区代码格式化价格将会很好。 例如,给定ISO国家代码CAN我想格式化价格$ 20.00

请问Java有这种支持?如果没有,那么可以实现这个目标的开放源代码版本(例如Date的joda时间)?

+0

Java支持200种多语言环境,但它只有一些作为常量。 ['Locale'](http://docs.oracle.com/javase/6/docs/api/java/util/Locale.html)类定义中的更多信息。你有什么尝试? –

+0

如何获得没有定义常量的语言环境实例? – Mayumi

+0

'locale locale = new Locale(language_code,country_code);' –

回答

2

您可以根据您所需要的语言和国家创造Locale。默认情况下,Java有一些区域设置为常数,但它支持超过200个国家:

Locale locale = new Locale("es", "pe"); //Spanish, Peru 

更多信息:

+0

对于未来的读者,在以前的Java版本中有一个专门针对秘鲁货币的错误:https://bugs.openjdk.java.net/browse/JDK-7028073 – gian1200

+0

请注意,从明天开始,'S /'将成为新的正确的符号。资料来源:http://busquedas.elperuano.com.pe/normaslegales/ley-que-cambia-el-nombre-de-la-unidad-monetaria-de-nuevo-sol-ley-n-30381-1322623-1/ – gian1200

+0

@ gian1200谢谢!在阅读秘鲁官方报纸上的新法律之后,似乎老bug再也不会成为bug了,它需要再次修复(回滚)。 –