2
EURとUSDの間の特定の日に為替レートを取得しようとしています。問題は私がいつも交換の日を受けていることです:LocalDate{year=2016, month=1, dayOfMonth=8}
そして質問に日付を指定するかどうかは関係ありません。ここでJava Money - 特定の日付の通貨換算レート
私のMavenの依存関係です:
<dependency>
<groupId>javax.money</groupId>
<artifactId>money-api-bp</artifactId>
<version>1.0.1</version>
</dependency>
<dependency>
<groupId>org.javamoney</groupId>
<artifactId>moneta-bp</artifactId>
<version>1.1</version>
</dependency>
ソースコード:
public class Test {
public static void main(String[] args) {
ConversionQuery query = ConversionQueryBuilder.of()
.setProviderName("ECB")
.setBaseCurrency(Monetary.getCurrency("EUR"))
.setTermCurrency(Monetary.getCurrency("USD"))
.set(LocalDate.class, LocalDate.of(2017, Month.SEPTEMBER, 10))
.build();
final ExchangeRateProvider provider = getExchangeRateProvider(query);
final ExchangeRate rate1 = provider.getExchangeRate(query);
System.out.println(rate1);
ExchangeRateProvider ecbExchangeRateProvider = MonetaryConversions.getExchangeRateProvider("ECB");
ExchangeRate rate = ecbExchangeRateProvider.getExchangeRate("EUR", "USD");
System.out.println(rate);
}
}
そしてSOUTからの出力:
sep. 11, 2017 9:58:29 AM org.javamoney.moneta.internal.convert.ECBAbstractRateProvider newDataLoaded
INFO: Loaded ECBCurrentRateProvider exchange rates for days:1
sep. 11, 2017 9:58:30 AM org.javamoney.moneta.internal.convert.ECBAbstractRateProvider newDataLoaded
INFO: Loaded ECBHistoric90RateProvider exchange rates for days:63
ExchangeRate [base=EUR, factor=1.0861, conversionContext=ConversionContext (
{provider=ECB, rateTypes=[DEFERRED], providerDescription=European Central Bank, days=1, org.javamoney.moneta.internal.convert.LocalDate=LocalDate{year=2016, month=1, dayOfMonth=8}, javax.money.convert.RateType=HISTORIC})]
ExchangeRate [base=EUR, factor=1.0861, conversionContext=ConversionContext (
{provider=ECB, rateTypes=[DEFERRED], providerDescription=European Central Bank, days=1, org.javamoney.moneta.internal.convert.LocalDate=LocalDate{year=2016, month=1, dayOfMonth=8}, javax.money.convert.RateType=HISTORIC})]
ExchangeRate [base=USD, factor=0.9207255317189946, conversionContext=ConversionContext (
{provider=ECB, rateTypes=[DEFERRED], providerDescription=European Central Bank, days=1, org.javamoney.moneta.internal.convert.LocalDate=LocalDate{year=2016, month=1, dayOfMonth=8}, javax.money.convert.RateType=HISTORIC})]
sep. 11, 2017 9:58:35 AM org.javamoney.moneta.internal.convert.ECBAbstractRateProvider newDataLoaded
INFO: Loaded ECBHistoricRateProvider exchange rates for days:4358
ありがとう!
どのLocalDateクラスをインポートしていますか? –
'LocaleDate'はJDK8のものと似ています。 JDK7で明示的にコンパイルされたバックポートライブラリ( '-bp')を使っているのはなぜですか? – vl4d1m1r4
私はjava.time.LocalDateをインポートとして使用しています。なぜなら、私がbpなしでmoney-apiに依存していると、結果としてnullになるからです。そして間違った輸入は、なぜ私が2番目の例で何歳の日を得るのか説明していない。そして、もし私が:.set(org.javamoney.moneta.internal.convert.LocalDate.class、org.javamoney.moneta.internal.convert.LocalDate.from(Calendar.getInstance())に変更すると、同じ問題が発生します。 – Kiki