博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ts 格式化日期输出
阅读量:6344 次
发布时间:2019-06-22

本文共 2928 字,大约阅读时间需要 9 分钟。

功能

像C#中DateTime的ToString的格式化输出一样,在js/ts中输出格式化的日期字符串

网上很多正则的,不加分隔符就不行了,和C#的格式也不一样
刚接触js/ts没两月,可能会有问题。

效果

393206-20160509143923734-238524298.png

实现

/**     * 对日期进行格式化, 和C#大致一致 默认yyyy-MM-dd HH:mm:ss    * 可不带参数 一个日期参数 或一个格式化参数    * @param date 要格式化的日期     * @param format 进行格式化的模式字符串    *     支持的模式字母有:     *     y:年,     *     M:年中的月份(1-12),     *     d:月份中的天(1-31),     *     H:小时(0-23),     *     h:小时(0-11),     *     m:分(0-59),     *     s:秒(0-59),     *     f:毫秒(0-999),    *     q:季度(1-4)    * @return String    * @author adswads@gmail.com    */public dateFormat(date?: any, format?: string): string {    //无参数    if (date == undefined && format == undefined) {        date = new Date();        format = "yyyy-MM-dd HH:mm:ss";    }    //无日期    else if (typeof (date) == "string") {        format = date;        date = new Date();    }    //无格式化参数    else if (format === undefined) {        format = "yyyy-MM-dd HH:mm:ss";    }    else { }    //没有分隔符的特殊处理    var map = {        "y": date.getFullYear() + "",//年份        "M": date.getMonth() + 1 + "", //月份         "d": date.getDate() + "", //日         "H": date.getHours(), //小时 24        "m": date.getMinutes() + "", //分         "s": date.getSeconds() + "", //秒         "q": Math.floor((date.getMonth() + 3) / 3) + "", //季度         "f": date.getMilliseconds() + "" //毫秒     };    //小时 12    if (map["H"] > 12) { map["h"] = map["H"] - 12 + ""; }    else { map["h"] = map["H"] + ""; }    map["H"] += "";    var reg = "yMdHhmsqf";    var all = "", str = "";    for (var i = 0, n = 0; i < reg.length; i++) {        n = format.indexOf(reg[i]);        if (n < 0) { continue; }        all = "";        for (; n < format.length; n++) {            if (format[n] != reg[i]) {                break;            }            all += reg[i];        }        if (all.length > 0) {            if (all.length == map[reg[i]].length) {                str = map[reg[i]];            }            else if (all.length > map[reg[i]].length) {                if (reg[i] == "f") {                    str = map[reg[i]] + this.charString("0", all.length - map[reg[i]].length);                }                else {                    str = this.charString("0", all.length - map[reg[i]].length) + map[reg[i]];                }            }            else {                switch (reg[i]) {                    case "y": str = map[reg[i]].substr(map[reg[i]].length - all.length); break;                    case "f": str = map[reg[i]].substr(0, all.length); break;                    default: str = map[reg[i]]; break;                }            }            format = format.replace(all, str);        }    }    return format;}/**    * 返回字符串 为n个char构成    * @param char 重复的字符    * @param count 次数    * @return String    * @author adswads@gmail.com    */public charString(char: string, count: number): string {    var str: string = "";    while (count--) {        str += char;    }    return str;}

转载于:https://www.cnblogs.com/adswads/p/5473904.html

你可能感兴趣的文章
我的友情链接
查看>>
无线和有线路由哪种性能更好
查看>>
Dwr3.0纯注解(纯Java Code配置)配置与应用浅析三之后端反向调用前端
查看>>
Ubuntu下安装遨游浏览器
查看>>
自定义Linux service脚本
查看>>
微信开发之发红包
查看>>
一键lnmp脚本&&php扩展模块安装(适用于CENTOS6.X系列)
查看>>
二维观察---文字的裁剪
查看>>
矩形覆盖
查看>>
ICMP
查看>>
界面设计模式(第2版)(全彩)
查看>>
解决VMware Workstation错误:未能锁定文件
查看>>
CentOS6 手动编译升级 gcc
查看>>
memcached的安装与开启脚本
查看>>
Linux与Window字符集~~伤不起的幽灵空白符
查看>>
zabbix 邮件报警 -- sendmail
查看>>
JavaScript异步编程
查看>>
tcpdump用法小记
查看>>
MySQL基础安全注意细节
查看>>
Oracle随机函数—dbms_random
查看>>