3

Timeランダムな値を生成するにはどうすればよいですか? 例: 07:02:3308:52:14など。乱数の生成方法は知っていますが、その方法がわかりません。TIMEデータベースの列にランダムな値を入力したいと考えています。

4

6 に答える 6

5
import java.util.Random;
import java.sql.Time;

final Random random = new Random();
final int millisInDay = 24*60*60*1000;
Time time = new Time((long)random.nextInt(millisInDay));

あなたの目的には、これで十分かもしれません。日によっては、テスト ケース (夏時間とうるう秒) を追加する必要がある長さが異なることを忘れないでください。

于 2013-02-20T16:21:21.777 に答える
2

Ajava.util.Dateは単なる long 値 (エポックからのミリ秒) のラッパーです。したがって、 でランダムな long 値を生成しRandom.nextLong()、結果を でラップするだけnew Date(result)です。これらの日付インスタンスは、JDBC ドライバーに渡すことができます。

于 2013-02-20T16:20:29.020 に答える
1

ここの RandomUtil クラスのような Random Generator を使用すると、いくつかの値の間でランダムな日付を作成できます。

このクラスを使用したコード例:

既存の日付から時間を更新する必要がある場合は、次のようなコードを使用できます。System.currentTimeMillis() をデータベースの日付に置き換えるだけです。

java.util.Date dateFromDB = new java.util.Date(System.currentTimeMillis());

カレンダー calendarFromDB = Calendar.getInstance();

calendarFromDB.setTime(dateFromDB);

java.util.Date randomDate = RandomUtil.getRandomDate(new java.util.Date(RandomUtil.getMinimumDate()), new java.util.Date(RandomUtil.getMaximumDate()), false);
Calendar calendar=Calendar.getInstance();
calendar.setTime(randomDate);

calendarFromDB.set(Calendar.HOUR_OF_DAY, calendar.get(Calendar.HOUR_OF_DAY));
calendarFromDB.set(Calendar.MINUTE, calendar.get(Calendar.MINUTE));
calendarFromDB.set(Calendar.SECOND, calendar.get(Calendar.SECOND));

dateFromDB = calendarFromDB.getTime();

出力例:

7 月 26 日火曜日 02:30:27 CET 157737154

または、いくつかの日付間のランダムな日付または時刻が必要な場合

java.util.Date randomDate = RandomUtil.getRandomDate(new java.util.Date(RandomUtil.getMinimumDate()), new java.util.Date(RandomUtil.getMaximumDate()), false);
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
System.out.println(sdf.format(randomDate));

出力例:

22:29:15

于 2015-07-29T16:34:03.617 に答える
0

ランダムなタイムスタンプを生成する方法を見ずに、乱数を生成する方法を知っている場合は、ランダムな時間値を作成できるように、毎回3つの乱数を生成するのはどうですか?

于 2013-02-20T16:16:59.043 に答える
0

サードパーティのライブラリを使用できる場合は、Joda Time を使用してそれを行う方法を紹介します。シナリオに合わせてコードを微調整する必要があります。

final Random random = new Random();
for (int i = 0; i < 10; i++) {
    final LocalTime time = new LocalTime(random.nextLong());
    System.out.println(time);
}

出力例:

01:58:24.328
10:59:20.576
07:52:40.011
11:53:54.524
13:43:57.474
21:51:25.032
11:46:35.988
16:20:20.224
09:47:10.404
22:35:43.337
于 2013-02-20T16:18:49.277 に答える