资讯专栏INFORMATION COLUMN

js 时间任意格式化 ,又来造轮子了

jayce / 3250人阅读

摘要:兼容性年月日点分秒年月日点分秒测试下一步,还有一个方法,字符串之间的格式转换测试

Date.prototype.format = function(formatString) {
    /**
     * 兼容性:ie5+
     * default
     * yyyy-MM-dd HH:mm:ss  => 2016-09-01 01:11:00 
     *
     * other
     * yyyy-M-d h:m:s       => 2016-9-1 1:11:0
     * y-M-d h:m:s          => 16-9-1 1:11:0
     * yyyy.M.d h:m:s       => 2016.9.1 1:11:0
     * d/M/yyyy             => 1/9/2016
     * yyyyMMddhhmmss            => 20160901011100
     * yyyyMdhms            => 2016911110
     * yy年M月d日 h点m分s秒       => 16年9月1日 1点11分0秒
     * 
     */
    var o = {
        Y: this.getFullYear(),
        M: this.getMonth() + 1,
        D: this.getDate(),
        H: this.getHours(),
        m: this.getMinutes(),
        S: this.getSeconds()
    };
    var reg = new RegExp("([Yy]+)|(M+)|([Dd]+)|([Hh]+)|(m+)|([Ss]+)", "g");
    if (formatString) {
        return formatString.replace(reg, function(v) {
            var old = v;
            if (/m/.test(v)) {
                old = o.m;
            } else if(/y/i.test(v)){
                var y = ""+o.Y;
                var le = y.length-(v.length==1?2:v.length);
                old = y.substring(y.length,le)
            }else {
                var key = v.toUpperCase().substr(0, 1);
                old = o[key];
                if (v.length > 1 && o[key] < 10) {
                    old = "0" + old;
                }
            }
            return old;
        });
    } else {
        return this.format("yyyy-MM-dd HH:mm:ss");
    }
};

测试:

var a = new Date().format();
console.log(a);
//2016-09-01 01:11:00


var a = new Date().format("yyyyMMddhhmmss");
console.log(a);
//20160901011100

下一步,还有一个方法,字符串之间的格式转换:
2016-09-01 => 09/01/2016

String.prototype.dateFormat = function(format) {
    var s = this.toString();
    var d = Date.parse(s);
    if (isNaN(d)) {
        return "NaN";
    }else{
        return new Date(s).format(format)
    }
}

测试:

var b = "2016-09-01".dateFormat("MM/dd/yyyy");
console.log(b);

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/80145.html

相关文章

  • 用Vue自己造个组件轮子,以及实践背后带来的思考

    摘要:用造个组件轮子吧闰土大叔如果你掌握了的组件知识,相关的指令事件,花点时间你也可以造出这么个入门级的小轮子。接下来,抛出造轮子实践背后带来的一些思考。以上三部分内容构成了的整个执行过程。 showImg(https://segmentfault.com/img/bV1Tnu?w=754&h=500); 前言 首先,向大家说声抱歉。由于之前的井底之蛙,误认为Vue.js还远没有覆盖到二三线...

    icyfire 评论0 收藏0
  • 使用 dpdm 定位 JavaScript/TypeScript 中的循环依赖

    摘要:在写大型项目的时候一不小心就会踩到直接循环依赖的坑里面所谓直接循环依赖是指在模块工厂函数中对其它依赖于自己的模块的成员有直接调用的情况比如假设有两个模块和其中的内容如下的内容如下下面这一行导致了直接循环依赖这时执行会报的错误这是因为模块的工 在写大型项目的时候, 一不小心就会踩到直接循环依赖的坑里面, 所谓直接循环依赖, 是指在模块工厂函数中, 对其它依赖于自己的模块的成员有直接调用的...

    BLUE 评论0 收藏0
  • 对症下药,快速下载github单个文件夹

    摘要:如何从上下载单个文件夹然后再看了看插件这个插件能显示树状目录,还提供了单个文件的下载。单个文件本身就提供这个功能。 瞎扯淡的前言 前几日遇到一个比较麻烦的事情,刚好周末有时间,不知道大家是否和我一样,在github阅读源码的时候,只想看他的src目录,当然在github上面阅读非常的麻烦,各种快捷都用不了,函数跳转,全局搜索….等等。但是。。。 关键来了,很有源码整个项目都非常的大,介...

    RichardXG 评论0 收藏0
  • 手摸手,带你封装一个vue component

    摘要:灵活性和针对性。所以我觉得大部分组件还是自己封装来的更为方便和灵活一些。动手开干接下来我们一起手摸手教改造包装一个插件,只要几分钟就可以封装一个专属于你的。 项目地址:vue-countTo配套完整后台demo地址:vue-element-admin系类文章一:手摸手,带你用vue撸后台 系列一(基础篇)系类文章二:手摸手,带你用vue撸后台 系列二(登录权限篇)系类文章三:手摸手,带...

    pkhope 评论0 收藏0

发表评论

0条评论

jayce

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<