-1

保持するオブジェクトのコレクションを記録する必要があります: 日付と平均気温。日付をさかのぼって追跡できる必要があります。

そこで、これらの値を保持するクラスを作成し、これらのオブジェクトを保持する 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);
    }

ご協力いただきありがとうございます!

4

1 に答える 1

0

同じbeginDateオブジェクトを使用しています。これは、すべての値が同じになることを意味します。リストの作成中に変更された可能性がありますが、表示されるのは最終的な値だけです。

ほとんどの場合、エントリごとに新しい Date() オブジェクトを作成して、それぞれに異なる Date を指定するつもりでした。ところで、私longはより効率的であるだけでなく、この問題がないものを使用することを好みます。

于 2013-10-20T14:05:44.417 に答える