为最终用户提供一系列货币。他们感兴趣的其中一个可以随时由他们选择。因此,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
的位置(为简洁起见,不包括货币汇率)。
有没有办法根据在运行时动态提供的货币代码来确定区域设置?
答案 0 :(得分:2)
如果您只支持有限数量的货币,那么您最好手动创建映射。否则它将很难,因为每种货币有多个有效的区域设置。例如,美元可以是Thread.sleep((long) (1000 / FRAME_RATE)); //where FRAME_RATE is your desired FPS
或en_US
或es_US
或es_PR
...
您可以查看所有es_EC
的{{1}}以获得一个想法:
Currency.getInstance(locale)