java - 获取 javax.money.CurrencyUnit 的显示名称

标签 java joda-money java-money jsr354

我有一个 javax.money.CurrencyUnit 实例,我想在给定区域设置中显示它的名称(例如“美元”、“欧元”、“日元”等)。我已阅读所有文档,但我唯一能找到的是如何格式化 MonetaryAmount:

MonetaryFormats.getAmountFormat(AmountFormatQueryBuilder.of(Locale.US).set(CurrencyStyle.NAME).set("pattern", "00,00,00,00.00 ¤").build()).format(myCurrencyUnit);

我可以看到我指定了 CurrencyStyle.NAME,因此它将在结果中返回货币名称,但问题是我没有 MonetaryAmount 并且找不到 CurrencyUnit 的格式化程序。

谢谢

最佳答案

我从代码中看到JavaMoney不支持货币显示名称这样的概念。 CurrencyStyle.NAME 尝试从 JDK 货币解析显示名称。

/**
 * This method tries to evaluate the localized display name for a
 * {@link CurrencyUnit}. It uses {@link Currency#getDisplayName(Locale)} if
 * the given currency code maps to a JDK {@link Currency} instance.
 * <p>
 * If not found {@code currency.getCurrencyCode()} is returned.
 *
 * @param currency The currency, not {@code null}
 * @return the formatted currency name.
 */
private String getCurrencyName(CurrencyUnit currency) {
    Currency jdkCurrency = getCurrency(currency.getCurrencyCode());
    if (Objects.nonNull(jdkCurrency)) {
        return jdkCurrency.getDisplayName(locale);
    }
    return currency.getCurrencyCode();
}

因此,您无法获取比特币等自定义货币的显示名称。 创建了功能请求 Get display name/symbol of a CurrencyUnit

关于java - 获取 javax.money.CurrencyUnit 的显示名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37869617/

相关文章:

java - 为 java 类路径使用环境变量在 shell 脚本中不起作用

java - 在 ReportPortal、Java Cucumber 中手动设置启动名称

java - 从远程 git 存储库获取单个文件

java - 在单元测试中使用什么货币?

java - ResultSet::getBigDecimal 抛出 joda-money 的缩放异常

java - 如何更改 jsr-354 中 MonetaryAmount 除法的舍入

java - 有没有办法从整个美分值构造 MonetaryAmount?

java - 多线程Java

java - NumberFormat 与 Joda 货币

java - 使用 javamoney 1.3 库的 Amort 表