js获取时间并执行相应操作如:计算两个时间之差

  js获取时间并执行相应操作如:计算两个时间之差

  最近在做一个项目的时候,需要在前台利用js获取到时间并进行相应的操作.本来想用jquery的,但是后来发现好像没有封装起来只能使用js了

获取系统时间函数:  

//js中的日期时间函数
var date = new Date();
date.getYear();        //获取年份(2位)
date.getFullYear();    //获取完整的年份(4位,1970-)
date.getMonth();       //获取月份(0-11,0代表1月,所以在显示当前时间的时候需要date.getMonth() + 1)
date.getDate();        //获取日(1-31)
date.getDay();         //获取星期?(0-6,0代表星期天)
date.getTime();        //获取时间(从1970.1.1开始的毫秒数)
date.getHours();       //获取小时数(0-23)
date.getMinutes();     //获取分钟数(0-59)
date.getSeconds();     //获取秒数(0-59)
date.getMilliseconds();    //获取毫秒数(0-999)
date.toLocaleDateString();     //获取日期
var time=date.toLocaleTimeString();     //获取时间
date.toLocaleString();        //获取日期与时间

//获取年月日   获取格式为yyyy-MM-dd

var currentTime ="";
currentTime = (myDate.getFullYear() + "-");
currentTime = currentTime + ((myDate.getMonth() + 1) + "-");
currentTime = currentTime + (myDate.getDate());

因为两个时间之差只有日,时,分,秒的说法,没有年和月,因为后者为不定值,所以必须把时间合适进行转换为MM-dd-yyyy   当然上面的代码也可以直接拼接成MM-dd-yyyy格式。

                             

   var currentTime1 = currentTime.split("-");
   var currentTime2 = new Date(currentTime[1]+"-"+currentTime[2]+"-"+currentTime[0]);//这种格式在火狐中不通过:
    
aDate = sDate1.split("-");
oDate1 = new Date(aDate[1] + '/' + aDate[2] + '/' + aDate[0]);   //转换为12/13/2008格式
aDate = sDate2.split("-");
oDate2 = new Date(aDate[1] + '/' + aDate[2] + '/' + aDate[0]);//这种格式才能通过
 
  

完整代码:

* 计算两个日期的间隔天数
            * BeginDate:起始日期的文本框,格式為:2012-01-01
            * EndDate:結束日期的文本框,格式為:2012-01-02
            * 返回兩個日期所差的天數
            * 調用方法:
            * alert("相差"+Computation("date1","date2")+"天");
            */            
            function GetDateRegion(BeginDate,EndDate)
            {
                
                var aDate, oDate1, oDate2, iDays;
                var sDate1=document.getElementById(BeginDate).value;   //sDate1和sDate2是2008-12-13格式
               var sDate2=document.getElementById(EndDate).value;              
                aDate = sDate1.split("-");
                oDate1 = new Date(aDate[1] + '/' + aDate[2] + '/' + aDate[0]);   //转换为12/13/2008格式
                aDate = sDate2.split("-");
                oDate2 = new Date(aDate[1] + '/' + aDate[2] + '/' + aDate[0]);
                //iDays = parseInt(Math.abs(oDate1 - oDate2) / 1000 / 60 / 60 /24)+1;   //把相差的毫秒数转换为天数
                var i=(oDate1 - oDate2) / 1000 / 60 / 60 /24;
                if(i<0)
                {
                    i-=1;
                }
                else
                {
                    i+=1;
                }
                iDays = i;   //把相差的毫秒数转换为天数
                //alert(iDays);
                return iDays;
            }


假如现在有另外一个时间 那么我们现在只需要得到他们之间相差的毫秒数,就能得到他们之间任意的时间差。oDate1,oDate2都是MM-dd-yyyy格式

        var TotalMilliseconds = Math.abs(oDate1 - oDate2);//相差的毫秒数    最重要的函数就是abs(Number x);

   得到相差天数 var day = TotalMilliseconds/1000/60/60/24;

   得到相差小时 var hour = TotalMilliseconds/1000/60/60;

   其他类似

提供几个常用函数:

判断两个日期的大小(实例:用于计划完成日期和当天时间进行比较)

var planTimeTest = '${planTime1}';//获得数据的日期数据格式为 yyyy-MM-dd hh:MM:ss 这是我自己根据业务从后台获取的
planTime1 = planTimeTest.split(" ")[0];//获取计划完成时间yyyy-MM-dd
planCompleteTime = planTime1.split("-");
//获取年月日
currentTime = (myDate.getFullYear() + "-");
currentTime = currentTime + ((myDate.getMonth() + 1) + "-");
currentTime = currentTime + (myDate.getDate());
//比较两个日期的大小,值得注意的是要把月份放在第一位
if(Date.parse((myDate.getMonth() + 1)+"/"+myDate.getDate()+"/"+myDate.getFullYear())>
Date.parse(planCompleteTime[1]+"/"+planCompleteTime[2]+"/"+planCompleteTime[0])){
//做自己的操作
}



//| 把日期分割成数组  

Date.prototype.toArray = function()  
{   
    var myDate = this;  
    var myArray = Array();  
    myArray[0] = myDate.getFullYear();  
    myArray[1] = myDate.getMonth();  
    myArray[2] = myDate.getDate();  
    myArray[3] = myDate.getHours();  
    myArray[4] = myDate.getMinutes();  
    myArray[5] = myDate.getSeconds();  
    return myArray;  
} 


//| 取得当前日期所在月的最大天数  

Date.prototype.MaxDayOfDate = function()  
{   
    var myDate = this;  
    var ary = myDate.toArray();  
    var date1 = (new Date(ary[0],ary[1]+1,1));  
    var date2 = date1.dateAdd(1,'m',1);  
    var result = dateDiff(date1.Format('yyyy-MM-dd'),date2.Format('yyyy-MM-dd'));  
    return result;  
} 

//| 取得当前日期所在周是一年中的第几周  

Date.prototype.WeekNumOfYear = function()  
{   
    var myDate = this;  
    var ary = myDate.toArray();  
    var year = ary[0];  
    var month = ary[1]+1;  
    var day = ary[2];  
    document.write('< script language=VBScript\> \n');  
    document.write('myDate = Datue(''+month+'-'+day+'-'+year+'') \n');  
    document.write('result = DatePart('ww', myDate) \n');  
    document.write(' \n');  
    return result;  
}  

若要显示:当前日期加时间(如:2009-06-12 12:00)

function CurentTime()
    { 
        var now = new Date();
        var year = now.getFullYear();       //年
        var month = now.getMonth() + 1;     //月
        var day = now.getDate();            //日
        var hh = now.getHours();            //时
        var mm = now.getMinutes();          //分
        var clock = year + "-";
        if(month < 10)
            clock += "0";
        clock += month + "-";
        if(day < 10)
            clock += "0";
        clock += day + " ";
        if(hh < 10)
            clock += "0";
        clock += hh + ":";
        if (mm < 10) clock += '0'; 
        clock += mm; 
        return(clock); 
    } 



你可能感兴趣的:(WEB前端)