javascript日期格式化函数,跟C#中的使用方法类似-阿里云开发者社区

开发者社区> 技术mix呢> 正文

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初学者,欢迎大家讨论拍砖。




本文转自Artwl博客园博客,原文链接:http://www.cnblogs.com/artwl/,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
函数的⽂档说明 | 手把手教你入门Python之四十一
本节重点介绍函数的⽂档说明,函数应⽤:打印图形和数学计算
1003 0
SQL中CONVERT转化函数的用法
来自博客园http://www.cnblogs.com/xionglee/articles/1444916.html 格式:CONVERT(data_type,expression[,style])说明:此样式一般在时间类型(datetime,smalldatetime)与字符串类型(nchar,nvarchar,char,varchar)相互转换的时候才用到. 注意:时间日期类型转换以后的结果是字符串。
641 0
6个强大的JavaScript日期操作插件(翻译)
我们必须承认,JavaScript内建的Date方法实在是太基础了,远不够我们来处理日期。总有人会开发自己的JavaScript日期操作库,为何在能够使用已经开发并测试好的日期插件时还要再自己造个轮子呢。
590 0
JavaScript创建对象(四)——组合使用构造函数和原型模式
在JavaScript创建对象(三)——原型模式中,我们阐述了原型模式存在的两个问题:一是没办法通过构造函数初始化对象属性,二是共享引用类型的数据导致数据错乱。
813 0
C语言中使用大括号与给函数命名的正确方法(转载)
使用大括号的正确方法: 在C中,使用大括号的方法无所谓对还是错——只要每个开括号后都有一个闭括号,你的程序中就不再会出现与大括号有关的问题。
948 0
Renascence使用方法
Renascence使用方法 下层库的适配 类型 下层库所有向Renascence架构提供的函数,其输入输出都必须给一个对应的继承于IStatusType的类,用于读取、保存、映射、释放该类型。 /*Basic API*/ class IStatusType { public: IStatusType(const std::string name)
905 0
c++ GDI 中SelectObject使用方法和注意事项
介绍 CPen* SelectObject( CPen* pPen ); CBrush* SelectObject( CBrush* pBrush ); virtual CFont* SelectObject( CFont* pFont ); CBitmap* SelectObject( CBitmap* pBitmap ); int SelectObject( CRgn* pRgn ); CGdiObject* SelectObject( CGdiObject* pObject ); 函数功能:该函数选择一对象到指定的设备上下文环境中,该新对象替换先前的相同类型的对象。
1169 0
+关注
2969
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载