时间差值计算

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

import javax.xml.datatype.DatatypeConfigurationException;
import javax.xml.datatype.DatatypeFactory;
import javax.xml.datatype.XMLGregorianCalendar;

import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DateUtils;


public class DateHelper extends DateUtils {

   public static final String DEF_PATTERN = "yyyy-MM-dd HH:mm:ss";

   public static final String[] DATE_PATTERNS = {
         "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm", "yyyy-MM-dd HH", "yyyy-MM-dd", "yyyy-MM",
         "yyyy/MM/dd HH:mm:ss", "yyyy/MM/dd HH:mm", "yyyy/MM/dd HH", "yyyy/MM/dd", "yyyy/MM"
   };

   /**
    * 格式化输出
    * @param dt
    * @param pattern
    * @return
    */
   public static String format(Date dt) {
      return format(dt, DEF_PATTERN);
   }

   /**
    * 格式化输出
    * @param dt
    * @param pattern
    * @return
    */
   public static String format(Date dt, String pattern) {
      SimpleDateFormat simpleDateFormat;
      if (dt == null)
         return null;
      simpleDateFormat = new SimpleDateFormat(pattern);
      return simpleDateFormat.format(dt);
   }

   /**
    * Date 转换成 XMLGregorianCalendar
    * @param dt
    * @return
    * @throws DatatypeConfigurationException 
    */
   public static XMLGregorianCalendar toXmlDate(Date dt) throws DatatypeConfigurationException {
      if (dt == null)
         return null;
      GregorianCalendar cal = new GregorianCalendar();
      cal.setTime(dt);
      return DatatypeFactory.newInstance().newXMLGregorianCalendar(cal);
   }

   /**
    *  XMLGregorianCalendar 转换成 Date
    * @param dt
    * @return
    */
   public static Date toDate(XMLGregorianCalendar cal) {
      if (cal == null)
         return null;
      return cal.toGregorianCalendar().getTime();
   }

   /**
    * 日期转换
    * @param dateValue
    * @return
    * @throws ParseException 
    */
   public static Date parseDateIgnoreError(final String dateValue) {
      try {
         return parseDate(dateValue, DATE_PATTERNS);
      } catch (ParseException e) {
         return null;
      }
   }

   /**
    * 日期转换
    * @param dateValue
    * @return
    * @throws ParseException 
    */
   public static Date parseDate(final String dateValue) throws ParseException {
      return parseDate(dateValue, DATE_PATTERNS);
   }

   /**
    * 获取两个日期之间的相差秒数
    * @param beginDate
    * @param endDate
    * @return
    */
   public static long differSeconds(Date beginDate, Date endDate) {
      long offsetTime = endDate.getTime() - beginDate.getTime();
      return Math.abs(offsetTime / 1000);
   }

   /**
    * 获取两个日期之间的相差分钟
    * @param beginDate
    * @param endDate
    * @return
    */
   public static long differMinutes(Date beginDate, Date endDate) {
      return differSeconds(beginDate, endDate) / 60;
   }

   /**
    * 获取两个日期之间的相差小时
    * @param beginDate
    * @param endDate
    * @return
    */
   public static long differHours(Date beginDate, Date endDate) {
      return differMinutes(beginDate, endDate) / 60;
   }

   /**
    * 获取两个日期之间的相差天数
    * @param beginDate
    * @param endDate
    * @return
    */
   public static long differDays(Date beginDate, Date endDate) {
      return differHours(beginDate, endDate) / 24;
   }
   
   /**
    * 获取当前时间的年月日时分秒 拼接的字符串
    * @return
    */
   public static String dateFullNumberStr(){
      StringBuffer sb = new StringBuffer();
      Calendar cal = Calendar.getInstance();
      String year = completeStr(String.valueOf(cal.get(Calendar.YEAR))); //获取年份
      String month = completeStr(String.valueOf(cal.get(Calendar.MONTH)+1));//获取月份
      String day = completeStr(String.valueOf(cal.get(Calendar.DATE)));
      String hour = completeStr(String.valueOf(cal.get(Calendar.HOUR_OF_DAY)));
      String min = completeStr(String.valueOf(cal.get(Calendar.MINUTE)));
      String second = completeStr(String.valueOf(cal.get(Calendar.SECOND)));
        sb.append(year);
        sb.append(month);
        sb.append(day);
        sb.append(hour);
        sb.append(min);
        sb.append(second);
      return sb.toString();
   }
   
   public static String completeStr(String str){
      StringBuilder sb = new StringBuilder();
      if (StringUtils.isBlank(str))
         return "";
      
      if (StringUtils.defaultString(str).length() == 1) {
         sb.append("0");
      }
      sb.append(str);
      return sb.toString();
   }
}   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值