A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 朱婵 中级黑马   /  2014-2-20 16:10  /  693 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. import java.text.DateFormat;
  2. import java.text.ParseException;
  3. import java.text.SimpleDateFormat;
  4. import java.util.Calendar;
  5. import java.util.Date;
  6. import java.util.HashMap;
  7. import java.util.Map;

  8. import org.apache.commons.lang.StringUtils;

  9. public class DateUtils {
  10.         private static final Map<String, String> dtfmt = new HashMap<String, String>();
  11.         private static final Map<String, DateFormat> fmt = new HashMap<String, DateFormat>();       
  12.         static {
  13.                 dtfmt.put("\\d{8}", "yyyyMMdd");
  14.                 dtfmt.put("\\d{12}", "yyyyMMddHHmm");
  15.                 dtfmt.put("\\d{14}", "yyyyMMddHHmmss");
  16.                 dtfmt.put("\\d{4}-\\d{2}-\\d{2}", "yyyy-MM-dd");
  17.                 dtfmt.put("\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}", "yyyy-MM-dd HH:mm");
  18.                 dtfmt.put("\\d{4}-\\d{2}-\\d{2} \\d{2}\\d{2}", "yyyy-MM-dd HHmm");
  19.                 dtfmt.put("\\d{2}:\\d{2}:\\d{2}", "HH:mm:ss");
  20.                 dtfmt.put("\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}", "yyyy-MM-dd HH:mm:ss");
  21.                 dtfmt.put("\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}\\..*", "yyyy-MM-dd HH:mm:ss.SSS");
  22.                 dtfmt.put("\\d{4}/\\d{2}/\\d{2}", "yyyy/MM/dd");
  23.                 dtfmt.put("\\d{4}年\\d{2}月\\d{2}日", "yyyy年MM月dd日");
  24.                 dtfmt.put("\\d{4}年\\d{2}月\\d{2}日 \\d{2}时\\d{2}分\\d{2}秒", "yyyy年MM月dd日 HH时mm分ss秒");

  25.                 fmt.put("yyyyMMdd", new SimpleDateFormat("yyyyMMdd"));
  26.                 fmt.put("yyyyMMddHHmm", new SimpleDateFormat("yyyyMMddHHmm"));
  27.                 fmt.put("yyyyMMddHHmmss", new SimpleDateFormat("yyyyMMddHHmmss"));
  28.                 fmt.put("yyyy-MM-dd", new SimpleDateFormat("yyyy-MM-dd"));
  29.                 fmt.put("yyyy-MM-dd HH:mm", new SimpleDateFormat("yyyy-MM-dd HH:mm"));
  30.                 fmt.put("yyyy-MM-dd HHmm", new SimpleDateFormat("yyyy-MM-dd HHmm"));
  31.                 fmt.put("yyyy-MM-dd HH:mm:ss", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
  32.                 fmt.put("HH:mm:ss", new SimpleDateFormat("HH:mm:ss"));
  33.                 fmt.put("yyyy-MM-dd HH:mm:ss.SSS", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"));
  34.                 fmt.put("yyyy年MM月dd日", new SimpleDateFormat("yyyy年MM月dd日"));
  35.                 fmt.put("yyyy年MM月dd日 HH时mm分ss秒", new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒"));
  36.                 fmt.put("yyyy/MM/dd", new SimpleDateFormat("yyyy/MM/dd"));
  37.         }

  38.         public static String getCurrentDate(String yyyyMMdd) {
  39.                 SimpleDateFormat formatDate = new SimpleDateFormat(yyyyMMdd);
  40.                 Calendar cal = Calendar.getInstance();
  41.                 return formatDate.format(cal.getTime());
  42.         }

  43.         public static String getCurrentYear() {
  44.                 SimpleDateFormat formatDate = new SimpleDateFormat("yyyy-MM-dd");
  45.                 Calendar cal = Calendar.getInstance();
  46.                 String str = formatDate.format(cal.getTime());
  47.                 String[] strArr = str.split("-");

  48.                 return strArr[0];
  49.         }

  50.         public static String getParseDate(Date date) {
  51.                 String str = "";
  52.                 if (date != null) {
  53.                         SimpleDateFormat formatDate = new SimpleDateFormat("yyyy-MM-dd");
  54.                         str = formatDate.format(date);
  55.                 }

  56.                 return str;
  57.         }

  58.         public static Date parseDate(String date) {
  59.                 Date dat = null;
  60.                 if (date != null && date.trim().length() > 0) {
  61.                         SimpleDateFormat formatDate = new SimpleDateFormat("yyyy-MM-dd");
  62.                         try {
  63.                                 dat = formatDate.parse(date);
  64.                         } catch (ParseException e) {
  65.                                 dat = null;
  66.                         }
  67.                 } else
  68.                         dat = new Date();
  69.                 return dat;
  70.         }
  71.         /**  
  72.      *   
  73.      * @param year  
  74.      *            int 年份  
  75.      * @param month  
  76.      *            int 月份  
  77.      *   
  78.      * @return int 某年某月的第一天  
  79.      */  
  80.        
  81.         @SuppressWarnings("unused")
  82.         public static int getFirstDayOfMonth(int year, int month) {   
  83.         Calendar cal = Calendar.getInstance();   
  84.         cal.set(Calendar.YEAR, year);   
  85.         cal.set(Calendar.MONTH, month);     
  86.         return cal.getActualMinimum(Calendar.DATE);   
  87.     }  
  88.        
  89.         /**  
  90.      *   
  91.      * @param year  
  92.      *            int 年份  
  93.      * @param month  
  94.      *            int 月份  
  95.      *   
  96.      * @return int 某年某月的最后一天  
  97.      */  

  98.         @SuppressWarnings("unused")
  99.         public static int getLastDayOfMonth(int year, int month) {   
  100.         Calendar cal = Calendar.getInstance();   
  101.         cal.set(Calendar.YEAR, year);   
  102.         cal.set(Calendar.MONTH, month);   
  103.         return cal.getActualMaximum(Calendar.DATE);   
  104.     }  

  105.         /**
  106.          * 转换秒为 x天x小时x分x秒
  107.          *
  108.          * @param seconds
  109.          * @return
  110.          */
  111.         public static String getDayHourMinSec(long seconds) {
  112.                 long day = seconds / (24 * 60 * 60);
  113.                 long hour = (seconds - day * 24 * 60 * 60) / (60 * 60);
  114.                 long min = (seconds - day * 24 * 60 * 60 - hour * 60 * 60) / 60;
  115.                 long sec = seconds - day * 24 * 60 * 60 - hour * 60 * 60 - min * 60;
  116.                 StringBuffer result = new StringBuffer();
  117.                 if (day > 0) {
  118.                         result.append(day + "天");
  119.                 }
  120.                 if (hour > 0) {
  121.                         result.append(hour + "小时");
  122.                 }
  123.                 if (min > 0) {
  124.                         result.append(min + "分");
  125.                 }
  126.                 if (sec > 0) {
  127.                         result.append(sec + "秒");
  128.                 }
  129.                 if (result.length() == 0) {
  130.                         result.append("0秒");
  131.                 }
  132.                 return result.toString();
  133.         }
  134.        
  135.         /**
  136.          * 格式化日期为指定格式字符串
  137.          *
  138.          * @param date
  139.          * @param pattern
  140.          * @return
  141.          */
  142.         public static String format(final java.util.Date date, final String pattern) {
  143.                 if (StringUtils.isBlank(pattern) || !fmt.containsKey(pattern)) {
  144.                         throw new IllegalArgumentException("不支持格式化Pattern");
  145.                 }
  146.                 return fmt.get(pattern).format(date);
  147.         }
  148.        
  149.        
  150.         /**
  151.          *
  152.          * @param date
  153.          * @param time
  154.          * @return
  155.          */
  156.         public static String getNormalDateTime(String date, String time) {
  157.                 return StringUtils.leftPad(date.replaceAll("-|/|年|月|日", ""), 8, "20") + StringUtils.rightPad(StringUtils.leftPad(time.replaceAll(":|时|分|秒", ""), 4, "0"), 6, "0");
  158.         }
  159.        
  160.        

  161.         /**
  162.          *  根据日期字符串生成java.util.Date
  163.          * @param dateStr
  164.          * @return
  165.          */
  166.         public static java.util.Date toDate(String dateStr) {
  167.                 if (StringUtils.isBlank(dateStr)) {
  168.                         return null;
  169.                 }
  170.                 String pattern = getDatePattern(dateStr);
  171.                 if (StringUtils.isBlank(pattern)) {
  172.                         throw new IllegalArgumentException("无法识别日期字符串格式[" + dateStr + "]");
  173.                 }
  174.                 return toDate(dateStr, pattern);
  175.         }
  176.        

  177.         /**
  178.          * 根据日期字符串及格式生成java.util.Date
  179.          *
  180.          * @param dateStr
  181.          * @param pattern
  182.          * @return
  183.          */
  184.         public static java.util.Date toDate(String dateStr, String pattern) {
  185.                 if (StringUtils.isBlank(dateStr)) {
  186.                         return null;
  187.                 }
  188.                 try {
  189.                         return org.apache.commons.lang.time.DateUtils.parseDate(dateStr, new String[] { pattern });
  190.                 } catch (ParseException e) {
  191.                         throw new IllegalArgumentException(String.format("转换日期字符串不正确,字符串:%s,格式:%s", dateStr, pattern));
  192.                 }
  193.         }
  194.        
  195.         /**
  196.          * 根据日期字符串取得日期格式
  197.          *
  198.          * @param dateStr
  199.          * @return
  200.          */
  201.         public static String getDatePattern(String dateStr) {
  202.                 if (StringUtils.isBlank(dateStr)) {
  203.                         return null;
  204.                 }
  205.                 String pattern = null;
  206.                 for (String key : dtfmt.keySet()) {
  207.                         if (dateStr.matches(key)) {
  208.                                 return dtfmt.get(key);
  209.                         }
  210.                 }
  211.                 return pattern;
  212.         }

  213. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马