Ist es möglich, eine zufällige Datetime mit Jodatime zu generieren, so dass die Datetime das Format JJJJ-MM-TT HH: MM: SS hat und es zwei zufällige DatumZeiten generieren sollte wobei Date2 minus Date1 größer als 2 Minuten aber weniger als 60 Minuten ist. Bitte schlagen Sie eine Methode vor.Generieren zufälliger Datum Zeit in Java (joda Zeit)
Antwort
Dies folgt ganz genau, was Sie gefragt haben (außer für das korrigierte Format).
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));
Wenn Sie dies ausführen, werden Sie feststellen, dass Sie empörend Werte für Jahre erhalten werden, aber das ist nur die Folge eines zufälligen Datetime über den gesamten möglichen Bereich von Datetime zu erzeugen (oder Datum für diese Angelegenheit) . Aber die gleiche Technik der Begrenzung der Endzeit auf einen bestimmten Bereich kann auf die Startzeit angewendet werden, wenn Sie möchten.
Einfache
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));
Basierend auf der Tatsache, dass jedes Datum durch eine lange Reihe dargestellt werden kann, auf diese Methode der Date-Klasse einen Blick darauf werfen, http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Date.html#Date(long), können Sie eine maximale Date1 definieren, lassen Sie uns heute sagen , und randomize die Anzahl der Minuten hinzufügen.
Mit anderen Worten:
- Schritt 1 - eine lange Nummer randomisieren oder eine Nummer für die Date1
- Schritt 2 festgelegt - die Minuten randomisieren hinzuzufügen, zufällige multiplizieren mit 58 Minuten (58 x 60 x 1000) und in der Date1, plus die 2 Minuten (2x 60 x 1000)
versuchen
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);
können Sie mit Math.random() eine Zufallszahl erzeugen; Sie können diesen Wert verwenden
- 1. Joda-Time, Zeit ohne Datum
- 2. JODA Zeit in Java Appengine
- 3. Migration von Java-Kalender nach Joda Datum Zeit
- 4. Joda Zeit, bekommen Wochentage
- 5. Joda-Zeit für Javascript?
- 6. Java Joda Zeit mehrere Datumsformat Code-Optimierung
- 7. Wie Joda Zeit dieses Format
- 8. Joda Zeit gibt falsche Zeitzone
- 9. Logstash Konvertierungsdatum in gültige joda Zeit (@timestamp)
- 10. Joda Zeit Parsing Zeit mit mehr als 24 Stunden
- 11. Mapping ein Datum, ohne Zeit, in Joda/Hibernate
- 12. Java 7 Datum/Zeit API
- 13. Warum aktualisiert joda Zeit die Zeit und Offset, wenn Java-Zeit nicht?
- 14. ClojureScript Datum-Zeit-Bibliothek
- 15. Spiel Datum Zeit mit Datenbank Datum Zeit
- 16. Vergleichen von zwei Daten mit Joda-Zeit
- 17. Runtime Ausnahme bei dem Versuch, Datum Zeit mit joda DateTimeFormatter
- 18. Migration von Joda-Zeitbibliothek zu Java-Zeit (Java 8)
- 19. Wie Datum und Zeit getrennt in java
- 20. Joda-Zeit: UTC in Lokal umwandeln
- 21. Desiialize Joda Zeit von String in Grails?
- 22. java.lang.NoClassDefFoundError für Joda-Zeit in Android
- 23. Sollte ich anstelle von Joda-Zeit
- 24. Aktuelle Datumszeit in Java mit Joda-Zeit in mySQL-Typ Datum Uhrzeitformat
- 25. Datum Zeit in Groovy
- 26. Datum Zeit in Xslt
- 27. Generieren eines rand Zeit
- 28. PHP Datum Zeit Aktuelle Zeit Minuten hinzufügen
- 29. Lesen MySQL Datum Zeit als Unix Zeit
- 30. Joda Zeit rund um die Tage
Dies erzeugt nur eine Zufallszahl mit den Daten 1970-01-01 weiß nicht warum. – chettyharish
Ich denke, die letzte Zeile sollte sein: Timestamp rand = new Zeitstempel (rangebegin + (long) (Math.random() * diff); ' – saschoar