使用方式
➜ dateFormat(1500951766)2017-07-25 11:2:46➜ dateFormat(1500951766, 'Y-M-D')2017-07-25➜ dateFormat('Tue Jul 1 2017 15:27:19 GMT+0800 ', 'Y-M-D')2017-07-01➜ dateFormat('Tue Jul 1 2017 15:27:19 GMT+0800 ', 'Y/m/d')2017/7/1
完整代码
/** * 日期格式化 * @param {integer|string} dateString 待转换的【时间戳】或【日期时间格式原始字符串】 * @param {string} format 格式模板,默认 Y-M-D H:i:s --> 2017-07-02 13:24:01 * @return {string} 格式化后的字符串 或 当前时间对应默认格式的字符串 */function dateFormat(dateString, format) { var dateString = dateString || (new Date()).toString(); var format = format || 'Y-M-D H:i:s'; // 参数异常检查 if (typeof dateString === 'number') { dateString = parseInt(dateString * 1000); // 时间戳 秒 转 微秒 } var oDate = new Date(dateString); if (oDate.toString() == 'Invalid Date' || oDate.getFullYear().toString() == '1970') { throw new TypeError('Invalid timestamp or date string format.'); } // 格式转换 var formatMapping = { 'Y': oDate.getFullYear(), // 年 2017 'y': oDate.getFullYear().toString().substr(2), // 年 17 'M': fillZero(parseInt(oDate.getMonth()) + 1), // 月 07 'm': parseInt(oDate.getMonth()) + 1, // 月 7 'D': fillZero(oDate.getDate()), // 日 02 'd': oDate.getDate(), // 日 2 'H': oDate.getHours(), // 时 24 // 'h': oDate.getHours(), // 时 12 'I': fillZero(oDate.getMinutes()), // 分 01 'i': oDate.getMinutes(), // 分 1 'S': fillZero(oDate.getSeconds()), // 秒 03 's': oDate.getSeconds() // 秒 3 }; function fillZero(str) { var str = str.toString(); return str.length == 1 ? '0' + str : str; } for (var f in formatMapping) { if (formatMapping.hasOwnProperty(f)) { var re = new RegExp(f.toString()); format = format.replace(re, formatMapping[f]); } } return format.toString();};