JAVA 时间格式化工具类

/**
 * function:
 * @since  2017年5月24日 上午10:01:12
 * @author 
 * @copyright 
 */
package com.cdhy.incl.utils;

import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
 * @author haoyunlai
 *
 */
public class DateUtil {

   public static final SimpleDateFormat YMD14 = new SimpleDateFormat(
         "yyyyMMddHHmmss");

   public static final SimpleDateFormat YMD20 = new SimpleDateFormat(
         "yyyyMMddHHmmssSSSSSS");

   public static final SimpleDateFormat YMD8 = new SimpleDateFormat("yyyyMMdd");

   /**
    * 获取当前系统时间,格式为:yyyyMMddHHmmss
    * 
    * @author 
    * @since 2016年12月5日 下午2:50:32
    * @return
    */
   public static String getSysDateStr() {
      return YMD14.format(new Date());
   }

   /**
    * 将格式为@_date转换为数字
    * 
    * @author 
    * @since 2017年5月24日 上午10:06:36
    * @param _date
    *            如:2017-05-24 09:30:25
    * @return 20170524093025
    */
   public static String strToDateNoSeparator(final String _date) {
      return _date == null ? null : _date.replace("-", "").replace(" ", "")
            .replace(":", "").replace(".", "");
   }

   /**
    * 转timestamp日期
    * 
    * @author 
    * @since 2017年6月5日 上午10:06:48
    * @param date
    *            如:2017-05-24 09:30:25或20170524093025
    * @return
    */
   public static Timestamp toTimestamp(String date) {
      if (date == null) {
         return null;
      } else {
         String _tmp = strToDateNoSeparator(date);
         if (_tmp.length() < 8 || !_tmp.matches("\\d+")) {
            return null;
         }
         Calendar cal = Calendar.getInstance();
         cal.set(Calendar.YEAR, Integer.valueOf(_tmp.substring(0, 4)));
         cal.set(Calendar.MONTH, Integer.valueOf(_tmp.substring(4, 6)) - 1);
         cal.set(Calendar.DAY_OF_MONTH,
               Integer.valueOf(_tmp.substring(6, 8)));
         if (_tmp.length() >= 14) {
            cal.set(Calendar.HOUR_OF_DAY,
                  Integer.valueOf(_tmp.substring(8, 10)));
            cal.set(Calendar.MINUTE,
                  Integer.valueOf(_tmp.substring(10, 12)));
            cal.set(Calendar.SECOND,
                  Integer.valueOf(_tmp.substring(12, 14)));
         } else {
            cal.set(Calendar.HOUR_OF_DAY, 0);
            cal.set(Calendar.MINUTE, 0);
            cal.set(Calendar.SECOND, 0);
            cal.set(Calendar.MILLISECOND, 0);
         }
         return new Timestamp(cal.getTimeInMillis());
      }

   }

   /**
    * 获取系统当前时间
    * 
    * @author 
    * @since 2017年6月8日 下午1:41:09
    * @return
    */
   public static Timestamp getSysTimestamp() {
      return new Timestamp(System.currentTimeMillis());
   }

   /**
    * 根据当前日期获取上一年日期
    * 
    * @author 
    * @since 2017年7月11日 上午9:15:54
    * @param curDate
    * @return
    */
   public static String lastYear(String curDate) {
      if (curDate == null || "".equals(curDate)) {
         return "";
      }
      final String cd = curDate.trim().replace("-", "").replace(" ", "")
            .replace(":", "");
      if (!cd.matches("\\d+") || cd.length() < 8) { // 错误的日期
         return "";
      }
      Calendar cal = Calendar.getInstance();
      int y = Integer.valueOf(cd.substring(0, 4));
      int m = Integer.valueOf(cd.substring(4, 6));
      int d = Integer.valueOf(cd.substring(6, 8));
      cal.set(Calendar.YEAR, y);
      cal.set(Calendar.MONTH, m - 1);
      cal.set(Calendar.DAY_OF_MONTH, d - 366);
      return YMD8.format(cal.getTime());
   }

   
   /**
    * 获取下一年
    * 
    * @author 
    * @since 2017年6月1日 下午7:16:17
    * @param _date
    * @return
    */
   public static String getNextYear(final String _date) {
      String date = _date;
      if (date == null) {
         return null;
      } else if (date.length() < 8) {
         return _date;
      } else {
         date = _date.replace("-", "").replace(" ", "").replace(":", "");
         if (!date.matches("\\d+")) {
            return _date;
         }
      }
      int year = Integer.valueOf(date.substring(0, 4));
      int month = Integer.valueOf(date.substring(4, 6));
      int day = Integer.valueOf(date.substring(6, 8));
      Calendar cal = Calendar.getInstance();
      cal.set(Calendar.YEAR, year + 1);
      cal.set(Calendar.MONTH, month - 1);
      cal.set(Calendar.DAY_OF_MONTH, day);
      return YMD8.format(cal.getTime());
   }
   
   public static Calendar toCalendar(String date14) {
      if (date14 == null) {
         return null;
      } else {
         String _tmp = strToDateNoSeparator(date14);
         if (_tmp.length() < 8 || !_tmp.matches("\\d+")) {
            return null;
         }
         Calendar cal = Calendar.getInstance();
         cal.set(Calendar.YEAR, Integer.valueOf(_tmp.substring(0, 4)));
         cal.set(Calendar.MONTH, Integer.valueOf(_tmp.substring(4, 6)) - 1);
         cal.set(Calendar.DAY_OF_MONTH,
               Integer.valueOf(_tmp.substring(6, 8)));
         if (_tmp.length() >= 14) {
            cal.set(Calendar.HOUR_OF_DAY,
                  Integer.valueOf(_tmp.substring(8, 10)));
            cal.set(Calendar.MINUTE,
                  Integer.valueOf(_tmp.substring(10, 12)));
            cal.set(Calendar.SECOND,
                  Integer.valueOf(_tmp.substring(12, 14)));
         } else {
            cal.set(Calendar.HOUR_OF_DAY, 0);
            cal.set(Calendar.MINUTE, 0);
            cal.set(Calendar.SECOND, 0);
            cal.set(Calendar.MILLISECOND, 0);
         }
         return cal;
      }
   }

   /**
    * 结果为date1-date2-dis:单位为:秒;存在空值返回-1
    * 
    * @author 
    * @since 2017年7月28日 下午12:54:54
    * @param date1
    * @param date2
    * @param dis
    * @return
    */
   public static long distance(String date1, String date2, int dis) {
      Calendar cal1 = toCalendar(date1);
      Calendar cal2 = toCalendar(date2);
      long ret = -1;
      if (cal1 != null && cal2 != null) {
         ret = cal1.getTimeInMillis() - cal2.getTimeInMillis();
      }
      return ret / 1000 - dis;
   }

   /**
    * 获取20位的时间
    * 
    * @author 
    * @since 2017年8月2日 下午6:55:59
    * @return
    */
   public static String getSysTime20() {
      return YMD20.format(new Date());
   }

   /**
    * 加时间分钟数
    * 
    * @author 
    * @since 2017年8月18日 下午6:06:14
    * @param srcDate
    *            yyyyMMddHHmmss
    * @param minute
    * @return
    */
   public static String dateAdd(String srcDate, int minute) {
      if (srcDate == null || !srcDate.matches("\\d+")
            || srcDate.length() < 14) {
         return null;
      }
      final String ymdhms = srcDate;
      int y = Integer.valueOf(ymdhms.substring(0, 4));
      int m = Integer.valueOf(ymdhms.substring(4, 6));
      int d = Integer.valueOf(ymdhms.substring(6, 8));
      int h = Integer.valueOf(ymdhms.substring(8, 10));
      int mi = Integer.valueOf(ymdhms.substring(10, 12));
      int s = Integer.valueOf(ymdhms.substring(12, 14));
      Calendar cal = Calendar.getInstance();
      cal.set(Calendar.YEAR, y);
      cal.set(Calendar.MONTH, m - 1);
      cal.set(Calendar.DAY_OF_MONTH, d);
      cal.set(Calendar.HOUR_OF_DAY, h);
      cal.set(Calendar.MINUTE, mi);
      cal.set(Calendar.SECOND, s);
      cal.add(Calendar.MINUTE, minute);
      return YMD14.format(cal.getTime());
   }

   /**
    * 加时间分钟数
    * 
    * @author 
    * @since 2017年8月18日 下午6:16:03
    * @param date
    * @param minute
    * @return
    */
   public static String dateAdd(Date date, int minute) {
      final String ymdhms = YMD14.format(date);
      return dateAdd(ymdhms, minute);
   }

   public static String fmtDate(String date8) {
      if (date8 == null || date8.length() < 8) {
         return date8;
      }
      final String d = date8.replace("-", "").replace(" ", "")
            .replace(":", "");
      if (d == null || d.length() < 8) {
         return date8;
      } else {
         return d.substring(0, 4) + "-" + d.substring(4, 6) + "-"
               + d.substring(6, 8);
      }
   }

   /**
    * 当前系统时间和传入的日期比较,只比较日期不比较时间
    * 
    * @author 
    * @since 2017年11月22日 下午6:42:19
    * @param _inDate
    * @return 1:系统时间>传入时间,0:系统时间=传入时间,-1:系统时间<传入时间
    */
   public static int compareDate(String _inDate) {
      String inDate = _inDate == null ? "" : _inDate.trim().replace("-", "")
            .replace(" ", "").replace(":", "").replace(".", "");
      if (inDate == null || inDate.isEmpty() || inDate.length() < 8
            || !inDate.matches("\\d+")) {
         return -10; // 认为是比当前日期大,因为值不正确
      }
      // if (inDate.length() < 14) {
      // inDate = inDate.concat("235959");
      // }
      Integer y = Integer.valueOf(inDate.substring(0, 4));
      Integer m = Integer.valueOf(inDate.substring(4, 6));
      Integer d = Integer.valueOf(inDate.substring(6, 8));
      // Integer h = Integer.valueOf(inDate.substring(8, 10));
      // Integer mi = Integer.valueOf(inDate.substring(10, 12));
      // Integer s = Integer.valueOf(inDate.substring(12, 14));
      Calendar inD = Calendar.getInstance();
      inD.set(Calendar.YEAR, y);
      inD.set(Calendar.MONTH, m - 1);
      inD.set(Calendar.DAY_OF_MONTH, d);
      inD.set(Calendar.HOUR_OF_DAY, 0);
      inD.set(Calendar.MINUTE, 0);
      inD.set(Calendar.SECOND, 0);
      inD.set(Calendar.MILLISECOND, 0);
      Calendar inC = Calendar.getInstance();
      inC.set(Calendar.HOUR_OF_DAY, 0);
      inC.set(Calendar.MINUTE, 0);
      inC.set(Calendar.SECOND, 0);
      inC.set(Calendar.MILLISECOND, 0);
      return inC.compareTo(inD);
   }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值