【问题标题】:Yahoo Finance Unparseable Date雅虎财经无法解析的日期
【发布时间】:2015-03-10 14:20:38
【问题描述】:

我正在尝试使用 java 的 yahoo Finance api 从 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)

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

【问题讨论】:

  • 看起来你的日期格式有误。
  • 你能影响数据格式吗?或者以某种方式告诉YahooFinance 库使用哪个语言环境?
  • 如何更改?所有的 csv 文件处理都由 API 完成
  • 可能你必须向 API 提供者提出这个缺陷。
  • 显然 CSV 与您用来解析它的库不兼容,因为 yahoofinance.Utils.parseDividendDate 无法解析日期,可能是因为日期采用美国日期格式(月/日/year),在美国、加拿大部分地区和南美洲(较少)部分地区以外基本上未使用。看起来yahoofinance.Utils.parseDividendDate 正在期待别的东西(顶级竞争者将是年/月/日、年-月-日、日/月/年等,但您必须与他们核实)。跨度>

标签: java processing yahoo-finance control-p5


【解决方案1】:

这个问题在 v1.2.3 中已经修复(同时 v1.3.0 可用,推荐使用)

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

雅虎财经有可能根本不返回任何股息日期,因此请在尝试使用之前检查它是否为null

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-22
    • 1970-01-01
    相关资源
    最近更新 更多