Ada persyaratan: membangun metode dan secara acak menghasilkan titik waktu antara 1990-12-31 00:00 00 dan 2013-12-31 00:00:00.
Idenya adalah sebagai berikut: Di Java API, tipe tanggal dan tipe panjang sangat mudah dikonversi, sehingga kami dapat mengonversi masalah menjadi menemukan nilai antara dua nomor tipe panjang.
Pada saat yang sama, Anda perlu memahami: Math.round (double) math.random (); tanggal baru (tahun, bulan, hari); Kalender di Java API.
Math.random () akan secara acak menghasilkan tipe ganda acak lebih besar dari atau sama dengan 0 atau kurang dari 1.
Math.round (ganda) membutuhkan lulus dalam tipe ganda untuk mengembalikan tipe panjang yang paling dekat dengan tipe ganda ini.
Kalender adalah kelas alat yang memproses waktu. Seperti tanggal, bulan kalender juga dihitung dari 0.
Kode spesifiknya adalah sebagai berikut
string statis public randatebetweenminandmax () {calendar calendar = calendar.getInstance (); // Perhatikan bahwa bulan perlu dikurangi oleh 1 kalender.set (1990,11,31); calendar.getTime (). GetTime (); // Menurut persyaratan, waktu, menit dan kedua harus diatur ke 0 calendar.set (calendar.hour_of_day, 0); Calendar.set (Calendar.minute, 0); Calendar.set (Calendar.Second, 0); long min = calendar.getTime (). getTime () ;; Calendar.set (2013,11,31); calendar.set (calendar.hour_of_day, 0); Calendar.set (Calendar.minute, 0); Calendar.set (Calendar.Second, 0); calendar.getTime (). GetTime (); long max = calendar.getTime (). getTime (); // Dapatkan nilai ganda lebih besar dari atau sama dengan min kurang dari max double randat = math.random ()*(maks-min)+min; // Bulatkan nilai ganda menjadi bilangan bulat dan ubah menjadi kalender tipe panjang. return calendar.getTime (). tostring (); } Jika Anda ingin menggunakan kelas tanggal untuk memproses waktu, Anda perlu mencatat bahwa tahun dimulai dari tahun 1900, jadi Anda perlu mengurangi 1900, dan bulan dimulai dari 0, jadi Anda perlu mengurangi 1. Misalnya, objek tanggal yang diwakili oleh tanggal baru (2013, 10, 10) adalah 10 November, 3913.
System.out.println (Tanggal Baru (2013,10,10));
Hasilnya adalah: Sen 10 Nov 00:00:00 CST 3913
Ubah masalah di atas sedikit. Mengetahui Mindate dan MaxDate mensyaratkan bahwa setiap hari interval waktu ini ditempatkan dalam daftar.
public static void getDateBetweenmaxandMin () {list <Date> Daftar = ArrayList baru <Date> (); Kalender kalender = calendar.getInstance (); Calendar.set (2010,10,10); Tanggal mindate = calendar.getTime (); // Minimum Time Calendar.Set (2013,11,1); Tanggal MaxDate = Calendar.GetTime (); // Waktu maksimum // Hitung berapa hari terpisah antara dua titik waktu int TotalDays = ints.Checkedcast ((MaxDate.GetTime ()) - mindate.getTime ())/(1000 * 60 * 60 * 24)); Calendar.Settime (Mindate); calendar.set (calendar.hour_of_day, 0); Calendar.set (Calendar.minute, 0); Calendar.set (Calendar.Second, 0); untuk (int i = 0; i <= TotalDays; i ++) {if (i! = 0) {// Tambahkan 1 calendar.add (calendar.day_of_month, 1); } list.add (calendar.getTime ()); }}Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.