/**
* 获取随机日期
* @param beginDate 起始日期,格式为:yyyy-MM-dd
* @param endDate 结束日期,格式为:yyyy-MM-dd
* @return
*/
public static final Date randomDate(String beginDate,String endDate){
try {
SimpleDateFormat format = new SimpleDateFormat(YYYY_MM_DD);
Date start = format.parse(beginDate); // 构造开始日期
Date end = format.parse(endDate); // 构造结束日期
// getTime()表示返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。
if(start.getTime() >= end.getTime()){
return null;
}
long date = random(start.getTime(),end.getTime());
return new Date(date);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
private static long random(long begin,long end){
long rtn = begin + (long)(Math.random() * (end - begin));
// 如果返回的是开始时间和结束时间,则递归调用本函数查找随机值
if(rtn == begin || rtn == end){
return random(begin,end);
}
return rtn;
}
调用
public void process() {
logger.info("南方身份證截止日期信息更新start");
AtpFundsSupplementInfoCond cond = new AtpFundsSupplementInfoCond();
cond.setIdcardExpireTimeIsNull(Boolean.TRUE);
List<AtpFundsSupplementInfoDto> suppList = atpFundsSupplementInfoService.queryByCond(cond, null, null);
String beginDate = "2038-01-01";
String endDate = "2039-02-28";
String idCardTime = DynamicConfigLoader.get(dateStr);
logger.info("fpd.atp.quartz.funds.idcardTimeConfig:"+idCardTime);
if(idCardTime!=null){
beginDate = idCardTime.split("@")[0];
endDate = idCardTime.split("@")[1];
}
if(!CollectionUtils.isEmpty(suppList)){
for(AtpFundsSupplementInfoDto suppDto:suppList){
Date randomDate = CalendarUtils.randomDate(beginDate, endDate);
suppDto.setIdcardExpireTime(randomDate);
atpFundsSupplementInfoService.save(suppDto);
}
}
logger.info("南方身份證截止日期信息更新end");
}