wdmv1981:
私は、Unixタイムスタンプを取得するには日付をGregorianCalendarインスタンスに変換しています。
同じ日付が異なるUnixは毎回タイムスタンプを返します。しかし、なぜ、私は思っていました。
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Calendar calendar = new GregorianCalendar();
calendar.set(2018, 0, 1, 0,0,0);
System.out.println(sdf.format(calendar.getTime()));
Date date = calendar.getTime();
System.out.println(sdf.format(date));
System.out.println(date.getTime());
日付自体は、正しく、常に同じです"2018/01/01 00:00:00"
。しかし、なぜUNIXタイムスタンプが毎回違うのですか?例えば、これらは5つの実行後の値です。
1514761200624
1514761200618
1514761200797
1514761200209
1514761200132
achAmháin:
私はあなたの例では、ループ内のすべてのインスタンスを作成していると仮定していますか?
もしそうなら、あなたはそう、彼らは、ループの各反復で(ただしわずかに)変更するには、ミリ秒差を設定されていません。
これを回避するには、いずれかのミリ秒を設定し、またはループのインスタンス化の外側を行うことができます:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Calendar calendar = new GregorianCalendar();
calendar.set(2018, 0, 1, 0, 0, 0);
for (int i = 0; i < 5; i++) {
System.out.println(sdf.format(calendar.getTime()));
Date date = calendar.getTime();
System.out.println(sdf.format(date));
System.out.println(date.getTime());
}
これは、生成されます。
2018年1月1日夜12時〇〇分00秒
2018年1月1日夜12時〇〇分00秒
1514764800128
2018年1月1日夜12時〇〇分00秒
2018年1月1日夜12時〇〇分00秒
1514764800128
2018年1月1日夜12時〇〇分00秒
2018年1月1日夜12時〇〇分00秒
1514764800128
2018年1月1日夜12時〇〇分00秒
2018年1月1日夜12時〇〇分00秒
1514764800128
2018年1月1日夜12時〇〇分00秒
2018年1月1日夜12時〇〇分00秒
1514764800128