Java工具类

随机生成时间范围内的时间戳

    public static Date randomDate(String beginDate, String endDate) {
        try {
            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            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;
    }

    /**
     * 随机生成时间段之内的int(11)时间戳(开始时间和结束时间的随机数)
     */
    public 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;
    }


// 调用
Date randomDate = randomDate("2020-06-14 17:6:0", "2020-06-15 17:6:0");
Integer dateValue = Integer.valueOf(String.valueOf(randomDate.getTime()).substring(0, 10));

批量分组,写入数据库

    /**
     * list集合中有几十万条数据,每10000条为一组取出
     */
    public static Map groupList(List list) {

        int listSize = list.size();
        int toIndex = 10000;
        Map map = new HashMap();     //用map存起来新的分组后数据
        int keyToken = 1;
        for (int i = 0; i < list.size(); i += 10000) {
            if (i + 10000 > listSize) {        //作用为toIndex最后没有100条数据则剩余几条newList中就装几条
                toIndex = listSize - i;
            }
            List newList = list.subList(i, i + toIndex);
            map.put("第" + keyToken + "批次", newList);
            keyToken++;
        }

        return map;
    }


// 调用
        // dmpPhoneList存储的是一天的总条数
        List<dmp_phone> dmpPhoneList = phoneRepository.getbatch(Integer.parseInt(String.valueOf(end)));
        System.out.println("24天前的时间戳::" + Integer.parseInt(String.valueOf(end)) + ",一批的数据量:::" + dmpPhoneList.size());
        //得到每个批次
        Map<String, List<dmp_phone>> map = groupList(dmpPhoneList);

        Iterator<Map.Entry<String, List<dmp_phone>>> entries = map.entrySet().iterator();
        while (entries.hasNext()) {
            Map.Entry<String, List<dmp_phone>> entry = entries.next();
//            System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());
            for (dmp_phone phone : entry.getValue()) {
                // 获取当前时间(int类型的时间戳)
                long dateTime = new Date().getTime() / 1000L;
                Integer dateValue = Integer.valueOf(String.valueOf(dateTime).substring(0, 10));

                if (end > phone.getCreateTime()) {
                    phone.setUpdateTime(dateValue);
                    dmp_phone update = phoneRepository.update(phone);

                    dmp_phone_his his = new dmp_phone_his();
                    his.setPhone(phone.getPhone());
                    his.setProvince(phone.getProvince());
                    his.setCity(phone.getCity());
                    his.setLabel_id(phone.getLabel_id());
                    his.setCreateTime(phone.getCreateTime());
                    his.setLock(phone.getLock());
                    his.setUpdateTime(phone.getUpdateTime());

                    // 存放超过5天的数据
                    his_tmp.add(his);
                    deletelist.add(phone);
                }
            }
        }

拿到前N天的时间戳

       Calendar now = Calendar.getInstance();
        now.add(Calendar.DAY_OF_MONTH, -5);
        String endtime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(now.getTime());
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date dateStart = format.parse(endtime);
        long end = dateStart.getTime() / 1000L;

        System.out.println(end);

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值