雅虎财经无法解析的日期

Yahoo Finance Unparseable Date

我正在尝试使用 yahoo finance api 为 java 从 yahoo finance 提取股票数据。直到昨天我的程序都运行良好,当这段代码停止工作时,抛出以下错误:

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)

这是我停止工作的部分的代码,如果有帮助,我可以 post 完整的代码。我知道错误是在解析返回的 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");

此问题已在 v1.2.3 中修复(同时提供 v1.3.0,推荐使用)

此外,如果库无法解析分红日期,它会向日志文件写入错误(例如:SEVERE: Unparseable date: "11/17/2014"),但异常被捕获,分红日期将只是null

Yahoo Finance 有可能根本 return 没有任何股息日期,所以请在尝试使用它之前检查它是否 null

如果您遇到这样的问题,请不要犹豫,通过 Github 创建问题。