• Javascript对日期的操作


    javascript对日期处理的常用方法类

    <script language="JavaScript">
    <!--
    //程序:常用公历日期处理程序
     /**//*用相对不规则的字符串来创建日期对象,不规则的含义为:顺序包含年月日三个数值串,有间隔*/
    String.prototype.parseDate 
    = function(){
        
    var ar = (this + ",0,0,0").match(/\d+/g);
        
    return ar[5]?(new Date(ar[0],ar[1]-1,ar[2],ar[3],ar[4],ar[5])):(new Date());
    }

    /**//*
     * 功能:根据输入表达式返回日期字符串
     * 参数:dateFmt:字符串,由以下结构组成    
     *      yy:长写年,YY:短写年mm:数字月,MM:英文月,dd:日,hh:时,
     *      mi:分,ss秒,ms:毫秒,we:汉字星期,WE:英文星期.
     *      isFmtWithZero : 是否用0进行格式化,true or false
     * 返回:对应日期的中文字符串
    */
    Date.prototype.toString 
    = function(dateFmt,isFmtWithZero){
        dateFmt 
    = (dateFmt == null ? "yy-mm-dd hh:mi:ss" : dateFmt);
        
    if(typeof(dateFmt) != "string" )
            
    throw (new Error(-1'toString()方法的第一个参数为字符串类型!'));
        isFmtWithZero 
    = !!isFmtWithZero;
        
    var weekArr=[["","","","","","",""],["SUN","MON","TUR","WED","THU","FRI","SAT"]];
        
    var monthArr=["JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC"];
        
    var str=dateFmt;
        
    var o = {
            
    "yy" : this.getFullYear(),
            
    "YY" : this.getYear(),
            
    "mm" : this.getMonth()+1,
            
    "MM" : monthArr[this.getMonth()],
            
    "dd" : this.getDate(),
            
    "hh" : this.getHours(),
            
    "mi" : this.getMinutes(),
            
    "ss" : this.getSeconds(),
            
    "we" : "星期" + weekArr[0][this.getDay()],
            
    "WE" : weekArr[1][this.getDay()]
        }
        
    for(var i in o){
            str 
    = str.replace(new RegExp(i,"g"),o[i].toString().fmtWithZero(isFmtWithZero));
        }
        str 
    = str.replace(/ms/g,this.getMilliseconds().toString().fmtWithZeroD(isFmtWithZero));
        
    return str;
    }
    /**//*将一位数字格式化成两位,如: 9 to 09*/
    String.prototype.fmtWithZero 
    = function(isFmtWithZero){    
        
    return (isFmtWithZero && /^\d$/.test(this))?"0"+this:this;
    }
    String.prototype.fmtWithZeroD 
    = function(isFmtWithZero){    
        
    return (isFmtWithZero && /^\d{2}$/.test(this))?"00"+this:((isFmtWithZero && /^\d$/.test(this))?"0"+this:this);
    }

    /**//* 功能 : 返回与某日期相距N天(N个24小时)的日期
     * 参数 : num number类型 可以为正负整数或者浮点数,默认为1;
     *        type 0(秒) or 1(天),默认为天
     * 返回 : 新的Date对象
     
    */
    Date.prototype.dateAfter
    =function(num,type){
        num 
    = (num == null?1:num);
        
    if(typeof(num)!="number"throw new Error(-1,"dateAfterDays(num,type)的num参数为数值类型.");
        type 
    = (type==null?1:type);
        
    var arr = [1000,86400000];
        
    return new Date(this.valueOf() + num*arr[type]);
    }

    //判断是否是闰年,返回true 或者 false
    Date.prototype.isLeapYear = function (){
        
    var year = this.getFullYear();
        
    return (0==year%4 && ((year % 100 != 0)||(year % 400 == 0)));
    }

    //返回该月天数
    Date.prototype.getDaysOfMonth = function (){
        
    return (new Date(this.getFullYear(),this.getMonth()+1,0)).getDate();
    }

    //日期比较函数,参数date:为Date类型,如this日期晚于参数:1,相等:0 早于: -1
    Date.prototype.dateCompare = function(date){
        
    if(typeof(date) != "object" || !(/Date/.test(date.constructor)))
             
    throw new Error(-1,"dateCompare(date)的date参数为Date类型.");
        
    var d = this.getTime() - date.getTime();
        
    return d>0?1:(d==0?0:-1);
    }

    /**//*功能:返回两日期之差
     *参数:pd   PowerDate对象
     *    type: 返回类别标识.yy:年,mm:月,ww:周,dd:日,hh:小时,mi:分,ss:秒,ms:毫秒
     *    intOrFloat :返回整型还是浮点型值 0:整型,不等于0:浮点型
     *    output : 输出提示,如:时间差为#周!
     
    */
    Date.prototype.calDateDistance 
    = function (date,type,intOrFloat,output){
        
    if(typeof(date) != "object" || !(/Date/.test(date.constructor)))
             
    throw new Error(-1,"calDateDistance(date,type,intOrFloat)的date参数为Date类型.");
        type 
    = (type==null?'dd':type);
        
    if(!((new RegExp(type+",","g")).test("yy,mm,ww,dd,hh,mi,ss,ms,")))
             
    throw new Error(-1,"calDateDistance(pd,type,intOrFloat,output)的type参数为非法.");
        
    var iof = (intOrFloat==null?0:intOrFloat);
        
    var num=0;
        
    var o = {
            
    "ww" : 7*86400000,
            
    "dd" : 86400000,
            
    "hh" : 3600000,
            
    "mi" : 60000,
            
    "ss" : 1000,
            
    "ms" : 1
        }
        
    switch(type){
            
    case "yy": num = this.getFullYear() - date.getFullYear(); break;
            
    case "mm": num = (this.getFullYear() - date.getFullYear())*12+this.getMonth()-date.getMonth(); break;
            
    default
                
    var sub = this.valueOf() - date.valueOf();
                
    if (o[type])
                    num 
    = (sub/o[type]).fmtRtnVal(iof);
                break;
        }
        
    return (output ? output.replace(/#/g," "+num+" ") : num);
    }
    //返回整数或者两位小数的浮点数
    Number.prototype.fmtRtnVal = function (intOrFloat){
        
    return (intOrFloat == 0 ? Math.floor(this) : parseInt(this*100)/100);
    }
    //根据当前日期所在年和周数返回周日的日期
    Date.prototype.RtnByWeekNum = function (weekNum){
        
    if(typeof(weekNum) != "number")
            
    throw new Error(-1,"RtnByWeekNum(weekNum)的参数是数字类型.");
        
    var date = new Date(this.getFullYear(),0,1);
        
    var week = date.getDay();
        week 
    = (week==0?7:week);
        
    return date.dateAfter(weekNum*7-week,1);
    }
    //根据日期返回该日期所在年的周数
    Date.prototype.getWeekNum = function (){
        
    var dat = new Date(this.getFullYear(),0,1);
        
    var week = dat.getDay();
        week 
    = (week==0?7:week);
        
    var days = this.calDateDistance(dat,"dd")+1;
        
    return ((days + 6 - this.getDay() - 7 + week)/7);
    }

    //-->
    </script>

    <script language="JavaScript">
    <!--
    var dw = document.write;
    var date2 = "2005-12-30".parseDate();
    dw(date2,
    "<br>");
    var date3 = "2006-1-10 11 11 11".parseDate();
    dw(date2.calDateDistance(date3,
    null,null,"时间差为#天!"));
    //alert(new Date(2000,2,-29));
    //
    -->
    </script>
  • 相关阅读:
    31个是你终生受用的爱情原则
    毕业后的五年拉开大家差距的原因在哪里?
    如何学习编程
    让人印象深刻的回答
    Android签名机制之---签名验证过程具体解释
    移动APP怎样保存用户password
    算法导论学习之线性时间求第k小元素+堆思想求前k大元素
    C#软件开发实例.私人订制自己的屏幕截图工具(十)在截图中包括鼠标指针形状
    Windows server 2003 + IIS6 搭建Asp.net MVC执行环境
    java移位运算符实验程序:&lt;&lt;(左移)、&gt;&gt;(带符 号右移)和&gt;&gt;&gt;(无符号右移)
  • 原文地址:https://www.cnblogs.com/eflylab/p/1391349.html
Copyright © 2020-2023  润新知