最近碰到了一個需求:
根據給出的一個時間字符串,例如: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這個方法即可——>通過解析含有“時分秒”的字符串進行組合顯示要求的日期時間字符串。
(當然獲取之后的時間只要把方法中的“-”號去掉即可)