package com.ywt.core.utils;

import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * create by daiyihua
 */
public class FormatUtil {

    public static final String FORMAT_DATE = "yyyy-MM-dd";
    public static final String FORMAT_DATE_MINUTE = "yyyy-MM-dd HH:mm";
    public static final String FORMAT_DATE_CYMDHM = "yyyy年M月d日 HH:mm";
    public static final String FORMAT_DATE_SECOND = "yyyy-MM-dd HH:mm:ss";

    public static final String DAY_TIME_START = " 00:00:00";
    public static final String DAY_TIME_END = " 23:59:59";

    /**
     * 保留两位有效数字
     */
    public static String decimalFormat(BigDecimal value){
        DecimalFormat df = new DecimalFormat("0.00");
        return df.format(value);
    }

    /**
     * 保留两位有效数字
     */
    public static String decimalFormat(Double value){
        DecimalFormat df = new DecimalFormat("0.00");
        if (value==null|| value == 0 )
            return "0.00";
        return df.format(value);
    }

    /**
     * 时间转换(专用list列表里面)
     */
    public static String createTimeFormatList(String value){
        if (value == null || value.equals(""))
            return "";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
        return sdf.format(value);
    }

    /**
     * 时间转换(专用list列表里面)
     */
    public static String createTimeFormatList(Date value){
        if (value == null)
            return "";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
        return sdf.format(value);
    }

    /**
     * 时间转换（专用详情里面）
     */
    public static String createTimeFormatDetail(String value){
        if (value == null || value.equals(""))
            return "";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        return sdf.format(value);
    }

    /**
     * 时间转换（专用详情里面）
     */
    public static String createTimeFormatDetail(Date value){
        if (value == null)
            return "";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        return sdf.format(value);
    }



    /**
     * 时间转换（得到日期）
     */
    public static String formatDate(Date value){
        if (value == null)
            return "";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        return sdf.format(value);
    }

    /**
     * 时间转换（得到日期）
     */
    public static String formatDate(String value){
        if (value == null || value.equals(""))
            return "";

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        return sdf.format(value);
    }

    /**
     * BigDecimal 放大100倍后转int
     * @param value
     * @return
     */
    public static int bigDecimalTo100Int(BigDecimal value){
        if (value == null){
            return 0;
        }
        BigDecimal bigDecimal = new BigDecimal("100");
        bigDecimal = bigDecimal.multiply(value);
        return bigDecimal.intValue();
    }


    /**
     * int 缩小100后转string
     * @param value
     * @return
     */
    public static String intShrink100ToStr(Integer value){
        if (value == null){
            return "0.00";
        }
        DecimalFormat df = new DecimalFormat("0.00");
        return df.format(new BigDecimal(value).divide(new BigDecimal("100")).doubleValue());
    }

    public static String intShrink100ToStr(Long value){
        if (value == null){
            return "0.00";
        }
        DecimalFormat df = new DecimalFormat("0.00");
        return df.format(new BigDecimal(value).divide(new BigDecimal("100")).doubleValue());
    }
    /**
     * 时间转换（得到日期）
     */
    public static Date stringToDate(String value, String formatDate) throws ParseException {
        if (value == null || value.equals(""))
            return null;

        SimpleDateFormat sdf = new SimpleDateFormat(formatDate);
        return sdf.parse(value);
    }


    /**
     * 时间转换（得到日期）
     */
    public static Date stringToDateDayTimeStart(String value) throws ParseException {
        // 先格式化字符串
        value = value + DAY_TIME_START;
        // 再对日期格式化，得到每天的开始时间
        return FormatUtil.stringToDate(value, FormatUtil.FORMAT_DATE_SECOND);
    }

    /**
     * 时间转换（得到日期）
     */
    public static Date stringToDateDayTimeEnd(String value) throws ParseException {
        // 先格式化字符串
        value = value + DAY_TIME_END;
        // 再对日期格式化，得到每天的截止时间
        return FormatUtil.stringToDate(value, FormatUtil.FORMAT_DATE_SECOND);
    }

}
