https://blog.csdn.net/zwt_guiji/article/details/80258944
績效項目中使用的日期格式化封裝:
$.dateChange = { formatDay: function (date) { if (date != null) { date = new Date(date); var y = date.getFullYear(); var m = date.getMonth() + 1; m = m < 10 ? '0' + m : m; var d = date.getDate(); d = d < 10 ? ('0' + d) : d; return y + '-' + m + '-' + d; } return ""; }, formatSecond: function (date) { date = new Date(date); var y = date.getFullYear(); var m = date.getMonth() + 1; m = m < 10 ? '0' + m : m; var d = date.getDate(); d = d < 10 ? ('0' + d) : d; var h = date.getHours(); h = h < 10 ? '0' + h : h; var min = date.getMinutes(); min = min < 10 ? '0' + min : min; var s = date.getSeconds(); s = s < 10 ? '0' + s : s; return y + '-' + m + '-' + d + ' ' + h + ':' + min + ':' + s; }, /** * 格式化時間對象----功能可擴展 * @param date [Date] 要格式化的時間對象 * @param format [String]格式化的形式 yyyy-mm-dd hh:MM:ss yyyy-m-d h:M:s * @returns {string} 格式化的結果字符串 */ formatDate: function (date, format) { var year = date.getFullYear(), month = date.getMonth() + 1, day = date.getDate(), hour = date.getHours(), minute = date.getMinutes(), second = date.getSeconds(); // 兩位 format = format .replace(/yyyy/i, year) .replace(/mm/i, $.string.formatNum2(month)) .replace(/dd/i, $.string.formatNum2(day)) .replace(/hh/i, $.string.formatNum2(hour)) .replace(/MM/i, $.string.formatNum2(minute)) .replace(/ss/i, $.string.formatNum2(second)); //一位 format = format .replace(/m/i, month) .replace(/d/i, day) .replace(/h/i, hour) .replace(/M/i, minute) .replace(/s/i, second); return format; } }
$.dateUtil = { /** * 計算時間 * @param date [Date] 作為基准的日期對象 * @param type [String] year, month, day * @param length [int] 基准時間之后:正數,基准時間之前:負數 * @returns {*} 計算后的日期對象 */ calcTime: function (date, type, length) { // 根據類型和長度修改date對象 var result = new Date(date.getTime()); type == "year" ? result.setFullYear(result.getFullYear() + length) : type == "month" ? result.setMonth(result.getMonth() + length) : type == "day" ? result.setDate(result.getDate() + length) : ""; return result; }, /** * 獲得從指定時間開始,推算指定時間的日期 * @param type [String] year, month, day * @param length [int] 當前時間之后:正數,當前時間之前:負數 * @param dateStr [String] 指定的時間字符串 * @param format [String] 生成時間的格式,具體格式見$.dateChange.formatDate * @returns {{current: string, result: string}} */ getTimeBlock: function (type, length, dateStr, format) { var _self = this; //初始化format format = format ? format : "yyyy-mm-dd"; //默認當前時間 var date = dateStr ? new Date(dateStr) : new Date(); var resultDate = _self.calcTime(date, type, length); var formatDate = $.dateChange.formatDate; return { current: formatDate(date, format), result: formatDate(resultDate, format) }; }, /** * 補足兩個時間段之間的時間,返回一個數組 * @param startTime yyyy-mm-dd * @param endTime yyyy-mm-dd * @returns {Array} */ completeTwoDate: function (opt) { var formatDate = $.dateChange.formatDate; var _self = this, startTime = opt.startTime, endTime = opt.endTime, type = opt.type, length = opt.length, format = opt.format; var result = []; var startDate = new Date(Date.parse(startTime.replace(/-/g, "/"))), // var startDate = new Date(startTime), endDate = new Date(endTime); while (endDate.getTime() >= startDate.getTime()) { result.push(formatDate(startDate, format)); startDate = _self.calcTime(startDate, type, length); } return result; } }