2017-01-09 67 views
0

在程序中,我使用以下步驟將美元兌換爲美元,反之亦然。一般來說,這個程序適用於任何貨幣。歷史美元兌歐元轉換

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年1月4日或什麼的$ 1歐元價值過去的日期。我在StackOverflow和其他類似網站上閱讀了大量的線索,未找到解決方案。我需要一個使用免費服務的解決方案。

+0

雅虎是否提供這種數據? – wvdz

+2

這是一個關於如何使用Java編寫代碼或如何使用該網站獲取歷史轉換率的問題? –

+0

兩者,但最重要的是第二個。我想要一種方法來從網絡中檢索這些信息。如果還有Java代碼,它會更好,但我也可以自己實現它。 –

回答

0

感謝Berger的回答,我可以實現我的方法。這裏是它的樣子。我希望這可能對這個論壇中的其他人有用。

public double getRate(String from, String to, Date date) { 
    BufferedReader reader = null; 
    try { 
     DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); 
     String dateString = df.format(date); 
     URL url = new URL("http://currencies.apps.grandtrunk.net/getrate/" + dateString +"/" + from + "/" + to); 
     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; 
}