UNPKG

@librecoder/tools

Version:

![build](https://img.shields.io/badge/build-passing-success.svg)

78 lines (75 loc) 2.04 kB
/** * 格式化日期为指定格式的字符串 * @param d 日期对象 * @param fmt 格式化模式 * @returns {*} 日期字格式化符串 */ export function formatDate(d, fmt) { var o = { "M+": d.getMonth() + 1, //月份 "d+": d.getDate(), //日 "h+": d.getHours() == 12 ? 12 : d.getHours() % 12, //小时 "H+": d.getHours(), //小时 "m+": d.getMinutes(), //分 "s+": d.getSeconds(), //秒 "q+": Math.floor((d.getMonth() + 3) / 3), //季度 "S+": d.getMilliseconds(), //毫秒 "t+": d.getHours() < 12 ? 'am' : 'pm', "T+": d.getHours() < 12 ? 'AM' : 'PM' }; if (/(y+)/.test(fmt)) { fmt = fmt.replace(RegExp.$1, (d.getFullYear() + "").substr(4 - RegExp.$1.length)); } for (var k in o) { if (new RegExp("(" + k + ")").test(fmt)) { fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(-RegExp.$1.length))); } } return fmt; }; /** * 按格式解析文件为日期,由于Date.parse作为基础方法已存在,方法名使用`deformat` * @param s 日期字符串 * @param fmt 格式化模式 * @returns {Date} 日期对象 */ export function parseDate(s, fmt) { if (typeof s === 'number') return new Date(s); if (!fmt) return new Date(Date.parse(s)); var d = { y: {reg: /y+/g}, M: {reg: /M+/g}, d: {reg: /d+/g}, H: {reg: /H+/g}, h: {reg: /h+/g}, m: {reg: /m+/g}, s: {reg: /s+/g}, S: {reg: /S+/g} } for (var k in d) { var o = d[k]; var m; while ((m = o.reg.exec(fmt)) != null) { o.idx = m.index; o.len = m[0].length; o.val = parseInt(s.substr(o.idx, o.len)); } } d.y.val = d.y.val || 0; d.M.val = d.M.val || 0; d.d.val = d.d.val || 0; if (d.H.val == null || isNaN(d.H.val)) { if (!isNaN(d.h.val) && typeof (d.h.val) === 'number') { var am = /am/i.test(s); if (am) d.H.val = d.h.val; else d.H.val = d.h.val + 12; } else { d.H.val = 0; } } d.m.val = d.m.val || 0; d.s.val = d.s.val || 0; d.S.val = d.S.val || 0; return (new Date(d.y.val, d.M.val - 1, d.d.val, d.H.val, d.m.val, d.s.val, d.S.val)); }