根据动态货币值动态更改区域设置

时间:2016-02-12 15:06:59

标签: java locale currency currency-formatting

为最终用户提供一系列货币。他们感兴趣的其中一个可以随时由他们选择。因此,RateLimiter中使用的区域设置需要根据所选货币进行更改。这似乎并不重要。

$url = 'http:://www.sth.com/some_name.format' ;
$parse_url = parse_url($url) ;
$path_info = pathinfo($parse_url['path']) ;
$file_extension = $path_info['extension'] ;
$save_path = 'any/local/path/' ;
$file_name = 'name' . "." . $file_extension ;
file_put_contents($save_path . $file_name , fopen($url, 'r'))

上面的代码将显示正确的货币值java.text.NumberFormat。由于货币(和区域设置)是在运行时根据用户的偏好动态确定的,如果Locale locale = new Locale("en", "US"); NumberFormat decimalFormat = NumberFormat.getCurrencyInstance(locale); decimalFormat.setGroupingUsed(true); decimalFormat.setCurrency(Currency.getInstance("USD")); System.out.println(decimalFormat.format(BigDecimal.valueOf(1.12))); 更改为不同的$1.12,则关联的区域设置也需要从{{1}更改到USD。否则,它会显示GBP预计en_US的位置(为简洁起见,不包括货币汇率)。

有没有办法根据在运行时动态提供的货币代码来确定区域设置?

1 个答案:

答案 0 :(得分:2)

如果您只支持有限数量的货币,那么您最好手动创建映射。否则它将很难,因为每种货币有多个有效的区域设置。例如,美元可以是Thread.sleep((long) (1000 / FRAME_RATE)); //where FRAME_RATE is your desired FPS en_USes_USes_PR ...

您可以查看所有es_EC的{​​{1}}以获得一个想法:

Currency.getInstance(locale)