package com.ozs.da.utils;

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

/**
 * @author 宋显哲
 * @version 1.0.0 创建于 2018/1/5
 **/
public final class DateUtil {

    private DateUtil() {
    }

    private static final SimpleDateFormat yyyyMMddHHmmss = new SimpleDateFormat("yyyyMMddHHmmss");
    private static final SimpleDateFormat yyyyMMdd = new SimpleDateFormat("yyyyMMdd");
    private static final SimpleDateFormat yyyy_MM_dd_HH_mm_ss = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    private static final SimpleDateFormat yyyy_MM_dd = new SimpleDateFormat("yyyy-MM-dd");


    /**
     * 获取当时间并格式化为：yyyyMMddHHmmss格式
     *
     * @return 返回yyyyMMddHHmmss格式的时间字符串
     * @throws Exception
     */
    public static String getCurrYyyyMMddHHmmssDate() throws Exception {
        return yyyyMMddHHmmss.format(new Date());
    }

    /**
     * 计算时间格式为：yyyyMMddHHmmss的时间差值
     *
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @return 返回时间，单位秒
     * @throws Exception
     */
    public static long compute_yyyyMMddHHmmssTime(String startTime, String endTime) throws Exception {
        Date startDate = yyyyMMddHHmmss.parse(startTime);
        Date endDate = yyyyMMddHHmmss.parse(endTime);
        return (endDate.getTime() - startDate.getTime()) / 1000L;
    }

    /**
     * 将时间从yyyyMMddHHmmss转换成：yyyy-MM-dd HH:mm:ss
     *
     * @param time
     * @return
     * @throws ParseException
     */
    public static String convertTime(String time) throws ParseException {
        return yyyy_MM_dd_HH_mm_ss.format(yyyyMMddHHmmss.parse(time));
    }

    /**
     * 将时间从yyyy-MM-dd HH:mm:ss转换成：yyyyMMddHHmmss
     *
     * @param time
     * @return
     * @throws ParseException
     */
    public static String yyyy_MM_dd_HH_mm_ss2yyyyMMddHHmmss(String time) throws ParseException {
        return yyyyMMddHHmmss.format(yyyy_MM_dd_HH_mm_ss.parse(time));
    }

    public static String getCurrentyyyy_MM_dd_HH_mm_ss(){
        return yyyy_MM_dd_HH_mm_ss.format(new Date());
    }

    /**
     * 获取当前时间，时间格式为：yyyyMMdd
     *
     * @return 返回时间字符串
     */
    public static String getCurrYyyyMmDd() {
        return yyyyMMdd.format(new Date());
    }


    public static String timestamp2yyyyMMddHHmmss(String timestamp) throws Exception {
        return yyyyMMddHHmmss.format(new Date(Long.parseLong(timestamp) * 1000));
    }

    public static String getCurrYyyy_MM_dd() throws Exception {
        return yyyy_MM_dd.format(new Date());
    }
    public static String formatDateToString(Date date) throws Exception {
        return yyyy_MM_dd_HH_mm_ss.format(date);
    }

}
