保持するオブジェクトのコレクションを記録する必要があります: 日付と平均気温。日付をさかのぼって追跡できる必要があります。
そこで、これらの値を保持するクラスを作成し、これらのオブジェクトを保持する ArrayList を作成しました。
私のコードでは、5日間保持するようにテストしています。プログラムを実行して ArrayList がいっぱいになると、すべて問題なく表示され、ターミナルに次のように表示されます。
dateSaved:2013-10-16 11:59:59 TimeStamp: 1381960799018
dateSaved:2013-10-17 11:59:59 TimeStamp: 1382047199018
dateSaved:2013-10-18 11:59:59 TimeStamp: 138213359902018
date1Saved1: -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);
}
ご協力いただきありがとうございます!