Há um requisito: Construa um método e gera aleatoriamente qualquer ponto de tempo entre 1990-12-31 00:00 00 e 2013-12-31 00:00:00.
A idéia é a seguinte: Na API Java, o tipo de data e o tipo longo são muito fáceis de converter, para que possamos converter o problema para encontrar qualquer valor entre dois números de tipo longo.
Ao mesmo tempo, você precisa entender: math.ound (duplo) math.random (); nova data (ano, mês, dia); Calendário na API Java.
Math.Random () gerará aleatoriamente tipos duplos aleatórios maiores ou iguais a 0 ou menor que 1.
Math.Round (duplo) requer a passagem em um tipo duplo para retornar o tipo longo mais próximo desse tipo duplo.
O calendário é uma classe de ferramentas que processa tempo. Assim, o mês do calendário também é calculado a partir de 0.
O código específico é o seguinte
public Static String RandomDateBetweenMinandMax () {calendário calendário = calendar.getInstance (); // Observe que o mês precisa ser subtraído por 1 calendário.set (1990,11,31); calendar.gettime (). gettime (); // De acordo com os requisitos, o tempo, o minuto e o segundo devem ser definidos como 0 calendário.set (calendar.hour_of_day, 0); calendário.set (calendário.Minute, 0); calendário.set (calendário.second, 0); longo min = calendar.gettime (). gettime () ;; calendário.set (2013,11,31); calendar.set (calendar.hour_of_day, 0); calendário.set (calendário.Minute, 0); calendário.set (calendário.second, 0); calendar.gettime (). gettime (); long max = calendar.gettime (). gettime (); // Obtenha o valor duplo maior ou igual a min menor que o max duplo randomdate = math.random ()*(max-min)+min; // arredondar o valor duplo em um número inteiro e convertê -lo em calendário de tipo longo.setTimeInmillis (Math.Round (RandomDate)); retorno calendário.getTime (). ToString (); } Se você deseja usar a classe de data para processar a hora, deve observar que o ano começa a partir de 1900, então você precisa subtrair 1900 e o mês começa em 0, então você precisa subtrair 1. Por exemplo, o objeto Data representado pela nova data (2013, 10, 10) é 10 de novembro de 3913.
System.out.println (New Date (2013,10,10));
O resultado é: seg 10 de novembro 00:00:00 CST 3913
Altere um pouco o problema acima. Conhecer a mente e o maxdate exige que todos os dias desse intervalo de tempo sejam colocados na lista.
public static void getDateBetweenMaxandmin () {list <Tate> list = new ArrayList <DeT> (); Calendário calendário = calendário.getInstance (); calendário.set (2010,10,10); Date Mindate = calendar.getTime (); // calendário de tempo mínimo.set (2013,11,1); Data maxdate = calendar.gettime (); // tempo máximo // calcule quantos dias separados entre dois pontos no tempo int totalDays = ints.checkedcast ((maxdate.gettime ()) - mente.gettime ())/(1000 * 60 * 60 * 24)); calendário.setTime (Mindate); calendar.set (calendar.hour_of_day, 0); calendário.set (calendário.Minute, 0); calendário.set (calendário.second, 0); para (int i = 0; i <= totalDays; i ++) {if (i! } list.add (calendar.gettime ()); }}O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.