/*
* 日期操作
*/
var DateOperation={
    /**
     * 日期相减 dtEnd-dtStart
     * @param {*} dtStart 
     * @param {*} dtEnd 
     * @param {*} datePart 返回差值部分:y-年,M-月,d-日,H-日,m-分,s-秒
     */
    subtraction:function(dtStart, dtEnd, datePart){
        var formatDtStart = new Date(Date.parse(dtStart.replace(/-/g, "/")));  
        var formatDtEnd = new Date(Date.parse(dtEnd.replace(/-/g, "/")));  
        if (datePart == "y")
            return parseInt((formatDtEnd-formatDtStart)/ (1000 * 60 * 60 * 24 * 365));
        if (datePart == "M")
            return parseInt((formatDtEnd-formatDtStart)/ (1000 * 60 * 60 * 24 * 30));
        if (datePart == "d")
            return parseInt((formatDtEnd-formatDtStart)/ (1000 * 60 * 60 * 24));
        if (datePart == "H")
            return parseInt((formatDtEnd-formatDtStart)/ (1000 * 60 * 60));
        if (datePart == "m")
            return parseInt((formatDtEnd-formatDtStart)/ (1000 * 60));
        if (datePart == "s")
            return parseInt((formatDtEnd-formatDtStart)/ (1000));
        return 0;
    },
    /**
     * 日期格式化,如YYYY-mm-dd HH:MM表示2019-06-06 19:45
     * @param {*} date 
     * @param {*} fmt 
     */
    formatDate(date,fmt) {
        let ret;
        const opt = {
            "Y+": date.getFullYear().toString(),        // 年
            "m+": (date.getMonth() + 1).toString(),     // 月
            "d+": date.getDate().toString(),            // 日
            "H+": date.getHours().toString(),           // 时
            "M+": date.getMinutes().toString(),         // 分
            "S+": date.getSeconds().toString()          // 秒
            // 有其他格式化字符需求可以继续添加,必须转化成字符串
        };
        for (let k in opt) {
            ret = new RegExp("(" + k + ")").exec(fmt);
            if (ret) {
                fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : DateOperation.myPadStart(opt[k], ret[1].length, "0"))
            };
        };
        return fmt;
    },

    myPadStart(str, targetLength, padString) {
        targetLength = targetLength >> 0; //floor if number or convert non-number to 0;
        padString = String(typeof padString !== 'undefined' ? padString : ' ');
        if (str.length > targetLength) {
          return String(str);
        } else {
          targetLength = targetLength - str.length;
          if (targetLength > padString.length) {
            padString += padString.repeat(targetLength / padString.length); //append to original to ensure we are longer than needed
          }
          return padString.slice(0, targetLength) + String(str);
        }
      }

}