【发布时间】: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