格式化时间,将刚刚,几分钟前,几小时前等时间转换成HH:MM格式的时间

最近做爬虫,爬了一下手机微博,开源一个处理微博时间的组件。

话不多说!
show my code!

    /**
     * 微博时间如下
     * 刚刚
     * X分钟前
     * <p>
     * X小时前
     * 昨天 +时间(昨天 16:30)
     * 纯日期。(04-16)
     * 两个参数:created表示以上微博发布时间
     * crawled表示爬取时间,也就是当前时间。
     * 功能:用当前的时间和微博发布的时间去推测微博发布的确切时间。
     */
    public String getCreatedTime(String created, String crawled) {
        String result;
        long crawledNew = 0;
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm");
        try {
            crawledNew = format.parse(crawled).getTime();
        } catch (ParseException e) {
            e.printStackTrace();
        }
        if (created.equals("刚刚")) {
            result = crawled;
        } else if (created.contains("分钟")) {
            long minute = Long.parseLong(created.split("分")[0]);
            crawledNew -= 60 * minute * 1000;
            result = format.format(new Date(crawledNew));
        } else if (created.contains("小时")) {
            long hour = Long.parseLong(created.split("小")[0]);
            crawledNew -= 60 * 60 * hour * 1000;
            result = format.format(new Date(crawledNew));
        } else if (created.contains("昨天")) {
            //2020-04-16 16:41
            crawledNew -= 60 * 60 * 24 * 1000;
            //2020-04-15 16:41
            crawled = format.format(new Date(crawledNew));
            //2020-04-15
            crawled = crawled.split(" ")[0];
            //2020-04-15 16:31
            result = created.replace("昨天", crawled);
        } else {
            String month = created.split("-")[0];
            String date = created.split("-")[1];

            String month2 = crawled.substring(5, 7);
            String date2 = crawled.substring(8, 10);

            long day;
            if (month.equals(month2)) {
                day = Integer.parseInt(date2) - Integer.parseInt(date);
            } else {
                day = (Integer.parseInt(month2) - Integer.parseInt(month)) * 30 + Integer.parseInt(date2) - Integer.parseInt(date);
            }
            crawledNew -= 60 * 60 * 24 * 1000 * day;
            result = format.format(new Date(crawledNew));
        }
        return result;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值