日時の形式が yyyy-MM-dd HH:MM:SS になるように Jodatime を使用してランダムな日時を生成することは可能ですか? Date2 から Date1 を差し引いた値が 2 分より大きく、2 分未満になる 2 つのランダムな日時を生成できるはずです。 60分。何か方法を提案してください。
22733 次
5 に答える
12
単純
long rangebegin = Timestamp.valueOf("2013-02-08 00:00:00").getTime();
long rangeend = Timestamp.valueOf("2013-02-08 00:58:00").getTime();
long diff = rangeend - rangebegin + 1;
Timestamp rand = new Timestamp(rangebegin + (long)(Math.random() * diff));
于 2013-02-08T11:48:39.853 に答える
11
これは、あなたが求めたものに厳密に従います (修正された形式を除く)。
Random random = new Random();
DateTime startTime = new DateTime(random.nextLong()).withMillisOfSecond(0);
Minutes minimumPeriod = Minutes.TWO;
int minimumPeriodInSeconds = minimumPeriod.toStandardSeconds().getSeconds();
int maximumPeriodInSeconds = Hours.ONE.toStandardSeconds().getSeconds();
Seconds randomPeriod = Seconds.seconds(random.nextInt(maximumPeriodInSeconds - minimumPeriodInSeconds));
DateTime endTime = startTime.plus(minimumPeriod).plus(randomPeriod);
DateTimeFormatter dateTimeFormatter = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");
System.out.println(dateTimeFormatter.print(startTime));
System.out.println(dateTimeFormatter.print(endTime));
これを実行すると、何年にもわたって法外な値が得られることに気付くでしょうが、それは単に、DateTime (またはさらに言えば Date) の可能な範囲全体にわたってランダムな DateTime を生成した結果です。ただし、必要に応じて、終了時間を特定の範囲に制限する同じ手法を開始時間に適用できます。
于 2013-02-09T07:33:10.287 に答える
1
任意の日付を長い数字で表すことができるという事実に基づいて、Dateクラスのこのメソッドhttp://docs.oracle.com/javase/1.4.2/docs/api/java/util/を見てください。 Date.html#Date(long)では、最大のDate1を定義し、たとえば今日、追加する分数をランダム化できます。
言い換えると :
- ステップ1-長い番号をランダム化するか、Date1の番号を設定します
- ステップ2-追加する分をランダム化し、ランダムに58分(58 x 60 x 1000)を掛けて、Date1に2分(2x 60 x 1000)を加えます
于 2013-02-08T11:54:40.160 に答える
0
試す
Random r = new Random();
long t1 = System.currentTimeMillis() + r.nextInt();
long t2 = t1 + 2 * 60 * 1000 + r.nextInt(60 * 1000) + 1;
DateTime d1 = new DateTime(t1);
DateTime d2 = new DateTime(t2);
于 2013-02-08T12:05:04.543 に答える
-3
Math.random(); を使用して乱数を生成できます。この値を使用できます。
于 2013-02-08T12:05:44.867 に答える