时间转换工具类

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

import javax.xml.datatype.DatatypeConfigurationException;
import javax.xml.datatype.DatatypeFactory;
import javax.xml.datatype.XMLGregorianCalendar;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;



 */
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", "yyyyMMddHHmmss"};

    /**
     * 格式化输出
     * 
     * @param dt
     *            dt
     * @return 格式化输出 yyyy-MM-dd HH:mm:ss
     */
    public static String format(Date dt)
    {
        return format(dt, DEF_PATTERN);
    }

    /**
     * 格式化输出
     * 
     * @param dt
     *            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
     *            dt
     * @return XMLGregorianCalendar
     * @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 cal
     *            cal
     * @return Date
     */
    public static Date toDate(XMLGregorianCalendar cal)
    {
        if (cal == null)
        {
            return null;
        }
        return cal.toGregorianCalendar().getTime();
    }

    /**
     * 日期转换
     * 
     * @param dateValue
     *            时间字符串
     * @return Date
     * @throws ParseException
     */
    public static Date parseDateIgnoreError(final String dateValue)
    {
        if (StringUtils.isBlank(dateValue))
        {
            return null;
        }

        try
        {
            return parseDate(dateValue, DATE_PATTERNS);
        }
        catch (Exception e)
        {
            return null;
        }
    }

    /**
     * 日期转换
     * 
     * @param dateValue
     *            时间字符串
     * @return Date
     * @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();
    }

    /**
     * @param str
     *            str
     * @return 拼接的字符串
     */
    private 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();
    }

    /**
     * 获取当前时间 格式:YYYYMMddHHmmssSSS
     * 
     * @return 时间字符串
     */
    public static String getNowDateMillisecond()
    {
        SimpleDateFormat dft = new SimpleDateFormat("YYYYMMddHHmmssSSS");
        String dm = dft.format(new Date());
        return dm;

    }

    /**
     * 获取今天剩余秒数
     * 
     * @return 剩余秒数
     */
    public static int getSeconds()
    {
        Calendar curDate = Calendar.getInstance();
        Calendar tommorowDate = new GregorianCalendar(curDate.get(Calendar.YEAR),
            curDate.get(Calendar.MONTH), curDate.get(Calendar.DATE) + 1, 0, 0, 0);
        return (int)(tommorowDate.getTimeInMillis() - curDate.getTimeInMillis()) / 1000;
    }

    /**
     * 获取Unix时间戳
     *
     * @return 当前Unix时间戳
     */
    public static long getNowTimeStamp()
    {
        return System.currentTimeMillis() / 1000;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值