最近做爬虫,爬了一下手机微博,开源一个处理微博时间的组件。
话不多说!
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;
}