javascript日期格式化函数,跟C#中的使用方法类似

背景

  日期格式化是编程中最常用的功能之一,C#中的日期格式化功能做的相当强大,方便易用,但JavaScript中却很不给力,也有网友给出了日期格式化方法:http://www.cnblogs.com/donghongtao/archive/2010/01/07/1641145.html,但用起来仍不方便。刚才看到博问中的一个问题(求一JS日期格式化函数,最好跟C#中的使用方法类似),于是就把自己写的一个日期格式化方法分享给大家,欢迎拍砖。

方法代码

  原理就是重写Date的toString方法(跟C#保持一致),对传入的格式化参数内的内容进行替换,代码如下:

Date.prototype.toString=function(format,loc){
    var time={};
    time.Year=this.getFullYear();
    time.TYear=(""+time.Year).substr(2);
    time.Month=this.getMonth()+1;
    time.TMonth=time.Month<10?"0"+time.Month:time.Month;
    time.Day=this.getDate();
    time.TDay=time.Day<10?"0"+time.Day:time.Day;
    time.Hour=this.getHours();
    time.THour=time.Hour<10?"0"+time.Hour:time.Hour;
    time.hour=time.Hour<13?time.Hour:time.Hour-12;
    time.Thour=time.hour<10?"0"+time.hour:time.hour;
    time.Minute=this.getMinutes();
    time.TMinute=time.Minute<10?"0"+time.Minute:time.Minute;
    time.Second=this.getSeconds();
    time.TSecond=time.Second<10?"0"+time.Second:time.Second;
    time.Millisecond=this.getMilliseconds();
    time.Week=this.getDay();

    var MMMArrEn=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];
    var MMMArr=["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"];
    var WeekArrEn=["Sun","Mon","Tue","Web","Thu","Fri","Sat"];
    var WeekArr=["星期日","星期一","星期二","星期三","星期四","星期五","星期六"];

    var oNumber=time.Millisecond/1000;

    if(format!=undefined && format.replace(/\s/g,"").length>0){
        if(loc!=undefined && loc =="en"){
            MMMArr=MMMArrEn.slice(0);
            WeekArr=WeekArrEn.slice(0);
        }
        format=format
            .replace(/yyyy/ig,time.Year)
            .replace(/yyy/ig,time.Year)
            .replace(/yy/ig,time.TYear)
            .replace(/y/ig,time.TYear)
            .replace(/MMM/g,MMMArr[time.Month-1])
            .replace(/MM/g,time.TMonth)
            .replace(/M/g,time.Month)
            .replace(/dd/ig,time.TDay)
            .replace(/d/ig,time.Day)
            .replace(/HH/g,time.THour)
            .replace(/H/g,time.Hour)
            .replace(/hh/g,time.Thour)
            .replace(/h/g,time.hour)
            .replace(/mm/g,time.TMinute)
            .replace(/m/g,time.Minute)
            .replace(/ss/ig,time.TSecond)
            .replace(/s/ig,time.Second)
            .replace(/fff/ig,time.Millisecond)
            .replace(/ff/ig,oNumber.toFixed(2)*100)
            .replace(/f/ig,oNumber.toFixed(1)*10)
            .replace(/EEE/g,WeekArr[time.Week]);
    }
    else{
        format=time.Year+"-"+time.Month+"-"+time.Day+" "+time.Hour+":"+time.Minute+":"+time.Second;
    }
    return format;
}

var d=new Date();
console.log(d.toString());    //2011-12-29 11:29:43
console.log(d.toString(""));    //2011-12-29 11:29:43
console.log(d.toString("yyyy-MM-dd"));    //2011-12-29
console.log(d.toString("HH:mm:ss"));    //11:29:43
console.log(d.toString("yyyy-MM-dd HH:mm:ss"));    //2011-12-29 11:29:43
console.log(d.toString("yyyy年MM月dd日 HH:mm:ss"));    //2011年12月29日 11:29:43
console.log(d.toString("yyyy-MM-dd HH:mm:ss fff"));    //2011-12-29 11:29:43 862

  代码中TMonth、TDay前的T表示两位数(Two)。

小结

  本人是javascript初学者,欢迎大家讨论拍砖。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaScript嵌入C代码是通过使用WebAssembly技术实现的。WebAssembly是一种低级字节码,可以在Web浏览器运行高性能的编译语言,例如C、C++和Rust。 首先,我们需要使用C编译器将C代码转换为WebAssembly二进制格式。可以使用诸如Emscripten之类的工具将C源代码编译为WebAssembly二进制文件。这个工具链使我们能够将C代码编译成与WebAssembly兼容的格式。 接下来,我们可以使用JavaScript的WebAssembly API来加载和执行这些二进制文件。WebAssembly提供了一组API,使我们可以加载WebAssembly模块,实例化模块,并在JavaScript调用其导出的函数。 在JavaScript,我们可以使用fetch函数来异步加载WebAssembly模块。加载完成后,我们可以使用WebAssembly.instantiate函数实例化WebAssembly模块。这将创建一个包含所有导出函数的实例。 一旦实例化了WebAssembly模块,我们可以使用JavaScript来调用C代码定义的函数。我们可以通过使用实例的exports对象来访问这些函数。在JavaScript,我们可以像调用普通的JavaScript函数一样调用这些导出函数。 总而言之,JavaScript嵌入C代码可以通过将C代码编译为WebAssembly二进制文件,并使用WebAssembly API在JavaScript加载和实例化模块来实现。然后,我们可以使用JavaScript来调用C代码定义的函数。这为我们提供了一种在Web浏览器运行高性能C代码的方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值