最近碰到了一个需求:
根据给出的一个时间字符串,例如:8小时前,3分钟前,45秒前这样的字符串,要求来获取这个时间点所对应的完整日期时间字符串。
以下是实现的效果:
代码:
- /**
- * 获取当前字符串所对应的完整日期表达形式的字符串
- *
- * @param timeStr
- * @return
- */
- public static Object getExchangedReleaseTime(String timeStr) {
- if (timeStr.contains("时")) {
- return getTimeByHour(-returnNumFromStr(timeStr));
- } else if (timeStr.contains("分")) {
- return getTimeByMinute(-returnNumFromStr(timeStr));
- } else if (timeStr.contains("秒")) {
- return getTimeBySecond(-returnNumFromStr(timeStr));
- } else {
- return timeStr;
- }
- }
- /**
- * 从含有数字的字符串中解析出Integer类型的数字
- *
- * @param str
- * @return
- */
- public static int returnNumFromStr(String str) {
- String regEx = "[^0-9]";
- Pattern p = Pattern.compile(regEx);
- Matcher m = p.matcher(str);
- String tempStr = m.replaceAll("").trim();
- return Integer.valueOf(tempStr).intValue();
- }
- /**
- * 获取当前时间之前或之后几小时 hour
- *
- * @param hour
- * @return
- */
- public static String getTimeByHour(int hour) {
- Calendar calendar = Calendar.getInstance();
- calendar.set(Calendar.HOUR_OF_DAY, calendar.get(Calendar.HOUR_OF_DAY)
- + hour);
- return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(calendar
- .getTime());
- }
- /**
- * 获取当前时间之前或之后几分钟 minute
- *
- * @param minute
- * @return
- */
- public static String getTimeByMinute(int minute) {
- Calendar calendar = Calendar.getInstance();
- calendar.add(Calendar.MINUTE, minute);
- return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(calendar
- .getTime());
- }
- /**
- * 获取当前时间之前或之后几秒钟 second
- *
- * @param second
- * @return
- */
- public static String getTimeBySecond(int second) {
- Calendar calendar = Calendar.getInstance();
- calendar.add(Calendar.SECOND, second);
- return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(calendar
- .getTime());
- }
所以要使用的话直接调用getExchangedReleaseTime这个方法即可——>通过解析含有“时分秒”的字符串进行组合显示要求的日期时间字符串。
(当然获取之后的时间只要把方法中的“-”号去掉即可)