1

1 日のすべての時間のすべての分のタイムスタンプを作成するプログラムを作成しています。タイムスタンプを取得するために Calendar クラスを使用しています。それを使用する必要があるため、他の方法を提案しても意味がありません。

ファイルを生成するための私の考えは、24 時間の for ループと、タイムスタンプが .dat ファイルに出力される 60 分のネストされた for ループを持つことでした。私はこれがうまくいくと思い、一日中データを印刷してから停止します。

しかし、私は間違っていました。完全に間違っていました。

その結果、現在から 2 年後の日付までの 1 分ごとのデータが印刷されます。

これまでのコードは次のとおりです。

public static void main (String [] args) throws FileNotFoundException
{ 
    try
    {
        DateFormat df = new SimpleDateFormat("dd-MM-yyyy");
        Date date = new Date();
        File fileName = new File(df.format(date) + ".dat");
        RandomAccessFile raf = new RandomAccessFile(fileName, "rw");

        Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
        cal.add(Calendar.MILLISECOND, -cal.get(Calendar.MILLISECOND));
        cal.add(Calendar.SECOND, -cal.get(Calendar.SECOND));
        cal.add(Calendar.MINUTE, -cal.get(Calendar.MINUTE));
        cal.add(Calendar.HOUR_OF_DAY, -cal.get(Calendar.HOUR_OF_DAY));

        for(int hourInMinutes = 0; hourInMinutes < 1440; hourInMinutes++) //1440 is the total minutes in a day
        {   
            for(int minute = 0; minute <= hourInMinutes; minute++)
            {   
                    raf.writeLong(cal.getTimeInMillis());       //Timestamp
                    cal.add(Calendar.MINUTE, 1);
            }
        }
        raf.close();
    }
    catch(IOException iOE)
    {
        System.err.println(iOE);
    }
}

データは真夜中 (昨夜) に開始され、同じ日の午後 11 時 59 分にデータの生成を停止したいと考えています。

これがどのように行われるかについて誰にも知識がありますか?

4

5 に答える 5