Java 获取数字之前的完整日期时间字符串


最近碰到了一个需求:

根据给出的一个时间字符串,例如:8小时前,3分钟前,45秒前这样的字符串,要求来获取这个时间点所对应的完整日期时间字符串。


以下是实现的效果:


代码:

[java] view plain copy
  1. /** 
  2.      * 获取当前字符串所对应的完整日期表达形式的字符串 
  3.      *  
  4.      * @param timeStr 
  5.      * @return 
  6.      */  
  7.     public static Object getExchangedReleaseTime(String timeStr) {  
  8.         if (timeStr.contains("时")) {  
  9.             return getTimeByHour(-returnNumFromStr(timeStr));  
  10.         } else if (timeStr.contains("分")) {  
  11.             return getTimeByMinute(-returnNumFromStr(timeStr));  
  12.         } else if (timeStr.contains("秒")) {  
  13.             return getTimeBySecond(-returnNumFromStr(timeStr));  
  14.         } else {  
  15.             return timeStr;  
  16.         }  
  17.     }  
  18.   
  19.     /** 
  20.      * 从含有数字的字符串中解析出Integer类型的数字 
  21.      *  
  22.      * @param str 
  23.      * @return 
  24.      */  
  25.     public static int returnNumFromStr(String str) {  
  26.         String regEx = "[^0-9]";  
  27.         Pattern p = Pattern.compile(regEx);  
  28.         Matcher m = p.matcher(str);  
  29.         String tempStr = m.replaceAll("").trim();  
  30.         return Integer.valueOf(tempStr).intValue();  
  31.     }  
  32.   
  33.     /** 
  34.      * 获取当前时间之前或之后几小时 hour 
  35.      *  
  36.      * @param hour 
  37.      * @return 
  38.      */  
  39.     public static String getTimeByHour(int hour) {  
  40.         Calendar calendar = Calendar.getInstance();  
  41.         calendar.set(Calendar.HOUR_OF_DAY, calendar.get(Calendar.HOUR_OF_DAY)  
  42.                 + hour);  
  43.         return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(calendar  
  44.                 .getTime());  
  45.     }  
  46.   
  47.     /** 
  48.      * 获取当前时间之前或之后几分钟 minute 
  49.      *  
  50.      * @param minute 
  51.      * @return 
  52.      */  
  53.     public static String getTimeByMinute(int minute) {  
  54.         Calendar calendar = Calendar.getInstance();  
  55.         calendar.add(Calendar.MINUTE, minute);  
  56.         return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(calendar  
  57.                 .getTime());  
  58.     }  
  59.   
  60.     /** 
  61.      * 获取当前时间之前或之后几秒钟 second 
  62.      *  
  63.      * @param second 
  64.      * @return 
  65.      */  
  66.     public static String getTimeBySecond(int second) {  
  67.         Calendar calendar = Calendar.getInstance();  
  68.         calendar.add(Calendar.SECOND, second);  
  69.         return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(calendar  
  70.                 .getTime());  
  71.     }  

 

所以要使用的话直接调用getExchangedReleaseTime这个方法即可——>通过解析含有“时分秒”的字符串进行组合显示要求的日期时间字符串。

(当然获取之后的时间只要把方法中的“-”号去掉即可)


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM