Sam*_*ami 18 java random timestamp
我想生成一个随机时间戳并为其添加一个随机增量以生成第二个时间戳.那可能吗?
如果我传递随机长值来创建时间戳,并且我想随机生成该长值,那么生成此值以在2012年给出时间戳的约束是什么?
das*_*ght 48
您需要将随机数缩放到特定年份的范围内,并将年份的开头添加为偏移量.一年中的毫秒数从一年变为另一年(闰年有一天,某些年有闰分,等等),因此您可以在缩放前确定范围,如下所示:
long offset = Timestamp.valueOf("2012-01-01 00:00:00").getTime();
long end = Timestamp.valueOf("2013-01-01 00:00:00").getTime();
long diff = end - offset + 1;
Timestamp rand = new Timestamp(offset + (long)(Math.random() * diff));
Run Code Online (Sandbox Code Playgroud)
对于您的示例,传递到Date的长值应该在2012年的1325397600和1293861599之间.尝试使用此站点进行检查!要生成随机日期,您可以执行以下操作:
Random r =new Random();
long unixtime=(long) (1293861599+r.nextDouble()*60*60*24*365);
Date d = new Date(unixtime);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
40586 次 |
最近记录: |