我正在尝试使用yahoo finance api for java从雅虎财务中提取股票数据。我的程序工作非常好,直到昨天,当这段代码停止工作时,抛出了以下错误:
SEVERE: Unparseable date: "11/17/2014"
java.text.ParseException: Unparseable date: "11/17/2014"
at java.text.DateFormat.parse(DateFormat.java:337)
at yahoofinance.Utils.parseDividendDate(Utils.java:176)
at yahoofinance.quotes.stock.StockQuotesData.getDividend(StockQuotesData.java:87)
at yahoofinance.quotes.stock.StockQuotesData.getStock(StockQuotesData.java:105)
at yahoofinance.YahooFinance.getQuotes(YahooFinance.java:336)
at yahoofinance.YahooFinance.get(YahooFinance.java:76)
at yahoofinance.YahooFinance.get(YahooFinance.java:61)
at controlp5userinterface.ControlP5UserInterface.setup(ControlP5UserInterface.java:75)
at processing.core.PApplet.handleDraw(PApplet.java:2361)
at processing.core.PGraphicsJava2D.requestDraw(PGraphicsJava2D.java:240)
at processing.core.PApplet.run(PApplet.java:2256)
at java.lang.Thread.run(Thread.java:695)
Exception in thread "Animation Thread" java.lang.NullPointerException
at controlp5userinterface.ControlP5UserInterface.setup(ControlP5UserInterface.java:76)
at processing.core.PApplet.handleDraw(PApplet.java:2361)
at processing.core.PGraphicsJava2D.requestDraw(PGraphicsJava2D.java:240)
at processing.core.PApplet.run(PApplet.java:2256)
at java.lang.Thread.run(Thread.java:695)
以下是我已停止工作的部分的代码,如果有任何帮助,我可以发布完整的代码。我知道错误是在解析yahoo finance cvs文件中返回的日期,但我不知道为什么它现在发生时它事先完美地工作。
Stock[] stocks = new Stock[symbols.length];
double[] quotePrices = new double[stocks.length];
for(int i = 0; i<stocks.length; i++){
String symbol = symbols[i];
stocks[i] = YahooFinance.get(symbol); //error is here
quotePrices[i] = stocks[i].getQuote().getPrice().doubleValue();
System.out.println("Price: " + quotePrices[i]);
}
System.out.println("Finished finance import");
答案 0 :(得分:3)
此问题已在v1.2.3中修复(同时v1.3.0可用,建议使用)
此外,如果库无法解析分红日期,它将向日志文件写入错误(例如:SEVERE: Unparseable date: "11/17/2014"
),但是异常被捕获并且分红日期将是{{ 1}}。
雅虎财经可能根本不会返还任何股息日期,因此请在尝试使用之前检查它是否null
。
如果遇到这样的问题,请不要犹豫,通过Github创建问题。