解析日期时间为"X分钟/小时/天/天/周/月/年前".格式 [英] Parsing date times in "X minutes/hours/days/weeks/months/years ago" format
本文介绍了解析日期时间为"X分钟/小时/天/天/周/月/年前".格式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如何解析日期格式,如X分钟/小时/天/天/周/月/月前.以下是一些示例来说明我所指的内容:
How can parse dates that are in the format like X minutes/hours/days/weeks/months/years ago. Here are some examples to show what I'm referring to:
- 3天前
- 1分钟前
- 2年前
我认为默认Java库不可能轻易实现.我说的对吗?
I don't think is is easily possible with the default Java libraries. Am I right?
推荐答案
基于 Calendar
API的小片段.
A little snippet based on the Calendar
API.
Pattern p = Pattern.compile("(\\d+)\\s+(.*?)s? ago");
Map<String, Integer> fields = new HashMap<String, Integer>() {{
put("second", Calendar.SECOND);
put("minute", Calendar.MINUTE);
put("hour", Calendar.HOUR);
put("day", Calendar.DATE);
put("week", Calendar.WEEK_OF_YEAR);
put("month", Calendar.MONTH);
put("year", Calendar.YEAR);
}};
String[] tests = {
"3 days ago",
"1 minute ago",
"2 years ago"
};
for (String test : tests) {
Matcher m = p.matcher(test);
if (m.matches()) {
int amount = Integer.parseInt(m.group(1));
String unit = m.group(2);
Calendar cal = Calendar.getInstance();
cal.add(fields.get(unit), -amount);
System.out.printf("%s: %tF, %<tT%n", test, cal);
}
}
输出:
3 days ago: 2012-08-18, 09:21:38
1 minute ago: 2012-08-21, 09:20:38
2 years ago: 2010-08-21, 09:21:38
这篇关于解析日期时间为"X分钟/小时/天/天/周/月/年前".格式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文