我需要记录一组保持:日期和平均日温度的对象。我需要能够追溯日期。
所以我创建了一个保存这些值的类,并创建了一个保存这些对象的 ArrayList。
在我的代码中,我测试保持 5 天。当我运行程序并且 ArrayList 被填满时,一切似乎都很好,终端显示:
保存日期:2013-10-16 11:59:59 时间戳:1381960799018
保存日期:2013-10-17 11:59:59 时间戳:1382047199018
保存日期:2013-10-18 11:59:59 时间戳:138213013-18
保存日期: -19 11:59:59 时间戳:1382219999018
这些时间戳都是独一无二的,似乎很好。
但是,当我然后进入 for 循环并想从每个条目中获取时间戳时,我得到:
entry: 0 //自第一个 dateSaved 未粘贴后删除*
entry: 1 timeInMillis: 1382306399018
entry: 2 timeInMillis: 1382306399018
entry: 3 timeInMillis: 1382306399018
entry: 4 timeInMillis: 1382306399018
这些都是相同的时间,并且是:2013 年 10 月 20 日星期日 21:59:59 GMT
就是这里的日期。但不是时间。而且我并没有真正得到我期望得到的价值。
这里出了什么问题?
GregorianCalendar date = new GregorianCalendar();
GregorianCalendar beginDate = new GregorianCalendar();
beginDate.roll(beginDate.DAY_OF_YEAR ,-5);
while(beginDate.getTimeInMillis() < date.getTimeInMillis() )
{
GCalAndDouble dateAndTemp = new GCalAndDouble(beginDate, WeatherStation.Instance().getValue(Enums.MeasurementType.outsideTemperature, Enums.ValueType.average, beginDate) );
list.add(dateAndTemp);
System.out.println("dateSaved:" + new SimpleDateFormat("YYYY-MM-dd KK:mm:ss").format(new Timestamp(beginDate.getTimeInMillis())) + " TimeStamp: " + beginDate.getTimeInMillis() );
long timeTemp = beginDate.getTimeInMillis();
beginDate.setTimeInMillis(timeTemp + 86400000); // + the ammount of milliseconds in a day.
}
for(int j = 0; j < 5; j++)
{
GCalAndDouble tempdateandtemp = list.get(j);
long timestamptemp = tempdateandtemp.getDate().getTimeInMillis();
System.out.println("entry: " + j + " timeInMillis: " + timestamptemp);
}
谢谢你的帮助!