日期格式化函数-将日期转换为想要的格式

使用说明:

    /**     * 日期格式化函数     * @param { Date | string | number }  time  日期原数据     * @param { string } format 时间格式
    * @param { boolean } use12HourClock 是否使用12小时进制
    * @return { string }     */   示例:    let date = new Date();         let newDate = formatTime(date, 'yyyy-MM-dd-d\\\\HH:H*mm-ms');
yyyy 年份 HH 小时
yy 年份后两位 H 小时
MM 月份 mm 分(个位带0)
cM 中文月份 s
eM 英文月份 ss 秒(个位带0)
M 月份(个位带0) m
dd ms 毫秒
d 日(个位带0) w 星期
et AM/ PM ct 上午/下午
                                 
 1     function formatTime(time, format, use12HourClock) {
 2         debugger
 3         if (!time || !format) {
 4             return '';
 5         }
 6         // 判断传入time是否为时间对象, 非时间对象则将其转化
 7         if (Object.prototype.toString.call(time) !== '[object Date]') {
 8             time = new Date(time);
 9         }
10         const map = {};
11         map.i = !0;
12         map.r = /\byyyy|yy|MM|cM|eM|M|dd|d|HH|H|mm|ms|ss|m|s|w|ct|et\b/g;
13 
14         const $12cc = ['上午', '下午'];
15         const $12ec = ['A.M.', 'P.M.'];
16         const week = ['日', '一', '二', '三', '四', '五', '六'];
17         const monthZh = ['一', '二', '三', '四', '五', '六', '七', '八', '九', '十', '十一', '十二'];
18         const monthEn = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sept', 'Oct', 'Nov', 'Dec'];
19 
20         map.yyyy = time.getFullYear();
21         map.yy = (`${map.yyyy}`).substr(2);
22 
23         map.M = time.getMonth() + 1;
24         map.MM = ((parseInt(map.M, 10) || 0) < 10 ? '0' : '') + parseInt(map.M, 10) || 0;
25         map.eM = monthEn[map.M - 1];
26         map.cM = monthZh[map.M - 1];
27 
28         map.d = time.getDate();
29         map.dd = ((parseInt(map.d, 10) || 0) < 10 ? '0' : '') + parseInt(map.d, 10) || 0;
30 
31         map.H = time.getHours();
32         map.HH = ((parseInt(map.H, 10) || 0) < 10 ? '0' : '') + parseInt(map.H, 10) || 0;
33 
34         map.m = time.getMinutes();
35         map.mm = ((parseInt(map.m, 10) || 0) < 10 ? '0' : '') + parseInt(map.m, 10) || 0;
36 
37         map.s = time.getSeconds();
38         map.ss = ((parseInt(map.s, 10) || 0) < 10 ? '0' : '') + parseInt(map.s, 10) || 0;
39 
40         map.ms = time.getMilliseconds();
41 
42         map.w = week[time.getDay()];
43 
44         const am = map.H < 12 ? 0 : 1;
45         map.ct = $12cc[am];
46         map.et = $12ec[am];
47         if (use12HourClock) {
48             map.H %= 12;
49         }
50         return format.replace(map.r, ($1) => {
51             const result = map[map.i ? $1 : $1.toLowerCase()];
52             return result == null ? $1 : result;
53         })
54     };

 

上一篇:利用Javascript解决【库存变更器】


下一篇:实现一个自动生成小学四则运算题目的命令行程序