2012-10-02 186 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了,它需要再次修復(回滾)。 –