首页 文章

GregorianCalendar arraylist的Java Weird System输出[关闭]

提问于
浏览
-2

我目前正试图将从雅虎财务API收到的数据保存到不同的阵列列表中,但我遇到了一些麻烦

package Stocks;

   import java.text.*;
   import java.util.*;
   import java.net.URL;
   import java.net.URLConnection;
   import java.util.Calendar;
   import java.util.Collection;
   import java.util.Date;
   import java.util.GregorianCalendar;
   import java.util.Scanner;
   import java.util.Arrays;


public class StockDownload {

public static final int DATE = 0;
public static final int OPEN = 1;
public static final int HIGH = 2;
public static final int LOW = 3;
public static final int CLOSE = 4;
public static final int VOLUME = 5;
public static final int ADJUSTED = 6;

private ArrayList<GregorianCalendar>dates;
private ArrayList<Double>opens;
private ArrayList<Double>highs;
private ArrayList<Double>lows;
private ArrayList<Double>closes;
private ArrayList<Integer>volumes;
private ArrayList<Double>adjcloses;


public StockDownload(String symbol, 
        GregorianCalendar start, GregorianCalendar end){
dates = new ArrayList<GregorianCalendar>();
opens = new ArrayList<Double>();
highs = new ArrayList<Double>();
lows = new ArrayList<Double>();
closes = new ArrayList<Double>();
volumes = new ArrayList<Integer>();
adjcloses = new ArrayList<Double>();

String url = "http://ichart.yahoo.com/table.csv?s=" + symbol 
        + "&a=" + start.get(Calendar.MONTH)
        + "&b=" + start.get(Calendar.DAY_OF_MONTH)
        + "&c=" + start.get(Calendar.YEAR)
        + "&d=" + end.get(Calendar.MONTH)
        + "&e=" + end.get(Calendar.DAY_OF_MONTH)
        + "&f=" + end.get(Calendar.YEAR)
        + "&g=d" + "&ignore=.csv";

try{
    URL yahoofin = new URL(url);
    URLConnection data = yahoofin.openConnection();
    Scanner input = new Scanner(data.getInputStream());
    if(input.hasNext())
        input.nextLine();

    while(input.hasNextLine()){
        String line = input.nextLine();

        String info[] = line.split(",");    
        dates.add(getDates(info[0]));
    }
    for(int i = 0; i < dates.size(); i++){
    System.out.println(dates.get(i));

    }

}catch(Exception e){
    System.err.println(e);
}

}   
public GregorianCalendar getDates(String date){

    DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
    Date rawdate = null;
    try {
        rawdate = df.parse(date);
    } catch (ParseException e) {
        e.printStackTrace();
    }
    GregorianCalendar cal = (GregorianCalendar) GregorianCalendar.getInstance();
    cal.setTime(rawdate);

    GregorianCalendar cleandate = cal;


    return cleandate;
}
}

输出即时得到这个样子的:java.util.GregorianCalendar中的[时间= 1344229200000,areFieldsSet = TRUE,areAllFieldsSet = TRUE,宽松= TRUE,区= sun.util.calendar.ZoneInfo [ID = “美国/芝加哥”,偏移量= -21600000,dstSavings = 3600000,useDaylight =真,过渡= 235,lastRule = java.util.SimpleTimeZone中[ID =美国/芝加哥,偏移= -21600000,dstSavings = 3600000,useDaylight =真,startYear = 0,STARTMODE = 3, startMonth = 2,朝九特派= 8,startDayOfWeek = 1,开始时间= 7200000,startTimeMode = 0,endMode = 3,endMonth = 10,endday指定= 1,一个endDayOfWeek = 1,结束时间= 7200000,endTimeMode = 0]],Firstdayofweek可= 1, minimalDaysInFirstWeek = 1,ERA = 1,YEAR = 2012,MONTH = 7,WEEK_OF_YEAR = 32,WEEK_OF_MONTH = 2,DAY_OF_MONTH = 6,DAY_OF_YEAR = 219,DAY_OF_WEEK = 2,DAY_OF_WEEK_IN_MONTH = 1,AM_PM = 0,HOUR = 0,HOUR_OF_DAY = 0,MINUTE = 0,SECOND = 0,微差= 0,ZONE_OFFSET = -21600000,DST_OFFSET = 3600000]

我认为这在技术上是正确的,只是比我需要更多的信息 .

我测试了只打印出存储在info []索引中的内容,我只是在将数据推入arraylist时遇到了麻烦 . 任何帮助或参考一些好的阅读材料将不胜感激!谢谢

PS启动它的类没有显示,但它只是将必要的变量传递给StockDownload方法

1 回答

  • 1

    您想使用相同的SimpleDateFormat进行打印,

    System.out.println(dates.get(i)); //<-- change this
    

    喜欢的东西

    DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
    System.out.println(df.format(dates.get(i).getTime()));
    

相关问题