在程序中,我使用以下程序将EUR转换为DOLLAR,反之亦然。一般来说,这个程序适用于任何货币。
public double getRate(String from, String to)
{
BufferedReader reader = null;
try
{
URL url = new URL("http://quote.yahoo.com/d/quotes.csv?f=l1&s=" + from + to + "=X");
reader = new BufferedReader(new InputStreamReader(url.openStream()));
String line = reader.readLine();
if (line.length() > 0)
{
return Double.parseDouble(line);
}
}
catch (IOException | NumberFormatException e)
{
System.out.println(e.getMessage());
}
finally
{
if (reader != null)
{
try
{
reader.close();
}
catch(IOException e)
{
}
}
}
return 0;
}
我的问题是我想为历史数据创建一个类似的方法。基本上,我需要一个带有以下签名的方法:
public double getRate(String from, String to, Date date) {
...
}
我可以这样打电话:
getRate("USD", "EUR", new SimpleDateFormat( "yyyyMMdd" ).parse( "20160104" ))
在2016/01/04或过去任何日期获得1欧元的价值。我在StackOverflow和其他类似网站上阅读了很多帖子,但没有找到解决方案。我需要使用免费服务的解决方案。