`
longgangbai
  • 浏览: 7325797 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

js 时间工具类的应用

阅读更多

 

 项目中使用的时间工具类,主要针对javascript中的时间扩展和延伸,便于使用:

 

//---------------------------------------------------  
//自定义时间方法判断闰年   prototype:用于针对js对象添加相应的属性和方法
//---------------------------------------------------  


Date.prototype.isLeapYear = function()   
{   
    return (0==this.getYear()%4&&((this.getYear()%100!=0)||(this.getYear()%400==0)));   
}   
  
//---------------------------------------------------  
// 日期格式化  
// 格式 YYYY/yyyy/YY/yy 表示年份  
// MM/M 月份  
// W/w 星期  
// dd/DD/d/D 日期  
// hh/HH/h/H 时间  
// mm/m 分钟  
// ss/SS/s/S 秒  
//---------------------------------------------------  
Date.prototype.Format = function(formatStr)   
{   
    var str = formatStr;   
    var Week = ['日','一','二','三','四','五','六'];  
  
    str=str.replace(/yyyy|YYYY/,this.getFullYear());   
    str=str.replace(/yy|YY/,(this.getYear() % 100)>9?(this.getYear() % 100).toString():'0' + (this.getYear() % 100));   
  
    str=str.replace(/MM/,this.getMonth()>9?this.getMonth().toString():'0' + this.getMonth());   
    str=str.replace(/M/g,this.getMonth());   
  
    str=str.replace(/w|W/g,Week[this.getDay()]);   
  
    str=str.replace(/dd|DD/,this.getDate()>9?this.getDate().toString():'0' + this.getDate());   
    str=str.replace(/d|D/g,this.getDate());   
  
    str=str.replace(/hh|HH/,this.getHours()>9?this.getHours().toString():'0' + this.getHours());   
    str=str.replace(/h|H/g,this.getHours());   
    str=str.replace(/mm/,this.getMinutes()>9?this.getMinutes().toString():'0' + this.getMinutes());   
    str=str.replace(/m/g,this.getMinutes());   
  
    str=str.replace(/ss|SS/,this.getSeconds()>9?this.getSeconds().toString():'0' + this.getSeconds());   
    str=str.replace(/s|S/g,this.getSeconds());   
  
    return str;   
}   
  
//+---------------------------------------------------  
//| 求两个时间的天数差 日期格式为 YYYY-MM-dd   
//+---------------------------------------------------  
function daysBetween(DateOne,DateTwo)  
{   
    var OneMonth = DateOne.substring(5,DateOne.lastIndexOf ('-'));  
    var OneDay = DateOne.substring(DateOne.length,DateOne.lastIndexOf ('-')+1);  
    var OneYear = DateOne.substring(0,DateOne.indexOf ('-'));  
  
    var TwoMonth = DateTwo.substring(5,DateTwo.lastIndexOf ('-'));  
    var TwoDay = DateTwo.substring(DateTwo.length,DateTwo.lastIndexOf ('-')+1);  
    var TwoYear = DateTwo.substring(0,DateTwo.indexOf ('-'));  
   alert("DateOne= "+DateOne +" DateTwo="+DateTwo+"  "+Date.parse(OneMonth+'/'+OneDay+'/'+OneYear)+"============"+Date.parse(TwoMonth+'/'+TwoDay+'/'+TwoYear));
    var cha=((Date.parse(OneMonth+'/'+OneDay+'/'+OneYear)- Date.parse(TwoMonth+'/'+TwoDay+'/'+TwoYear))/86400000);   
    return cha;  
}  
  
  
//+---------------------------------------------------  
//| 日期计算  
//+---------------------------------------------------  
Date.prototype.DateAdd = function(strInterval, Number) {   
    var dtTmp = this;  
    switch (strInterval) {   
        case 's' :return new Date(Date.parse(dtTmp) + (1000 * Number));  
        case 'n' :return new Date(Date.parse(dtTmp) + (60000 * Number));  
        case 'h' :return new Date(Date.parse(dtTmp) + (3600000 * Number));  
        case 'd' :return new Date(Date.parse(dtTmp) + (86400000 * Number));  
        case 'w' :return new Date(Date.parse(dtTmp) + ((86400000 * 7) * Number));  
        case 'q' :return new Date(dtTmp.getFullYear(), (dtTmp.getMonth()) + Number*3, dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());  
        case 'm' :return new Date(dtTmp.getFullYear(), (dtTmp.getMonth()) + Number, dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());  
        case 'y' :return new Date((dtTmp.getFullYear() + Number), dtTmp.getMonth(), dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());  
    }  
}  
  
//+---------------------------------------------------  
//| 比较日期差 dtEnd 格式为日期型或者 有效日期格式字符串  
//+---------------------------------------------------  
Date.prototype.DateDiff = function(strInterval, dtEnd) {   
    var dtStart = this;  
    if (typeof dtEnd == 'string' )//如果是字符串转换为日期型  
    {   
        dtEnd = StringToDate(dtEnd);  
    }  
    switch (strInterval) {   
        case 's' :return parseInt((dtEnd - dtStart) / 1000);  
        case 'n' :return parseInt((dtEnd - dtStart) / 60000);  
        case 'h' :return parseInt((dtEnd - dtStart) / 3600000);  
        case 'd' :return parseInt((dtEnd - dtStart) / 86400000);  
        case 'w' :return parseInt((dtEnd - dtStart) / (86400000 * 7));  
        case 'm' :return (dtEnd.getMonth()+1)+((dtEnd.getFullYear()-dtStart.getFullYear())*12) - (dtStart.getMonth()+1);  
        case 'y' :return dtEnd.getFullYear() - dtStart.getFullYear();  
    }  
}  
  
//+---------------------------------------------------  
//| 日期输出字符串,重载了系统的toString方法  
//+---------------------------------------------------  
Date.prototype.toString = function(showWeek)  
{   
    var myDate= this;  
    var str = myDate.toLocaleDateString();  
    if (showWeek)  
    {   
        var Week = ['日','一','二','三','四','五','六'];  
        str += ' 星期' + Week[myDate.getDay()];  
    }  
    return str;  
}  
  
//+---------------------------------------------------  
//| 日期合法性验证  
//| 格式为:YYYY-MM-DD或YYYY/MM/DD  
//+---------------------------------------------------  
function IsValidDate(DateStr)   
{   
    var sDate=DateStr.replace(/(^\s+|\s+$)/g,''); //去两边空格;   
    if(sDate=='') return true;   
    //如果格式满足YYYY-(/)MM-(/)DD或YYYY-(/)M-(/)DD或YYYY-(/)M-(/)D或YYYY-(/)MM-(/)D就替换为''   
    //数据库中,合法日期可以是:YYYY-MM/DD(2003-3/21),数据库会自动转换为YYYY-MM-DD格式   
    var s = sDate.replace(/[\d]{ 4,4 }[\-/]{ 1 }[\d]{ 1,2 }[\-/]{ 1 }[\d]{ 1,2 }/g,'');   
    if (s=='') //说明格式满足YYYY-MM-DD或YYYY-M-DD或YYYY-M-D或YYYY-MM-D   
    {   
        var t=new Date(sDate.replace(/\-/g,'/'));   
        var ar = sDate.split(/[-/:]/);   
        if(ar[0] != t.getYear() || ar[1] != t.getMonth()+1 || ar[2] != t.getDate())   
        {   
            //alert('错误的日期格式!格式为:YYYY-MM-DD或YYYY/MM/DD。注意闰年。');   
            return false;   
        }   
    }   
    else   
    {   
        //alert('错误的日期格式!格式为:YYYY-MM-DD或YYYY/MM/DD。注意闰年。');   
        return false;   
    }   
    return true;   
}   
  
//+---------------------------------------------------  
//| 日期时间检查  
//| 格式为:YYYY-MM-DD HH:MM:SS  
//+---------------------------------------------------  
function CheckDateTime(str)  
{   
    var reg = /^(\d+)-(\d{ 1,2 })-(\d{ 1,2 }) (\d{ 1,2 }):(\d{ 1,2 }):(\d{ 1,2 })$/;   
    var r = str.match(reg);   
    if(r==null)return false;   
    r[2]=r[2]-1;   
    var d= new Date(r[1],r[2],r[3],r[4],r[5],r[6]);   
    if(d.getFullYear()!=r[1])return false;   
    if(d.getMonth()!=r[2])return false;   
    if(d.getDate()!=r[3])return false;   
    if(d.getHours()!=r[4])return false;   
    if(d.getMinutes()!=r[5])return false;   
    if(d.getSeconds()!=r[6])return false;   
    return true;   
}   
  
//+---------------------------------------------------  
//| 把日期分割成数组  
//+---------------------------------------------------  
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;  
}  
  
//+---------------------------------------------------  
//| 取得日期数据信息  
//| 参数 interval 表示数据类型  
//| y 年 m月 d日 w星期 ww周 h时 n分 s秒  
//+---------------------------------------------------  
Date.prototype.DatePart = function(interval)  
{   
    var myDate = this;  
    var partStr='';  
    var Week = ['日','一','二','三','四','五','六'];  
    switch (interval)  
    {   
        case 'y' :partStr = myDate.getFullYear();break;  
        case 'm' :partStr = myDate.getMonth()+1;break;  
        case 'd' :partStr = myDate.getDate();break;  
        case 'w' :partStr = Week[myDate.getDay()];break;  
        case 'ww' :partStr = myDate.WeekNumOfYear();break;  
        case 'h' :partStr = myDate.getHours();break;  
        case 'n' :partStr = myDate.getMinutes();break;  
        case 's' :partStr = myDate.getSeconds();break;  
    }  
    return partStr;  
}  
  
//+---------------------------------------------------  
//| 取得当前日期所在月的最大天数  
//+---------------------------------------------------  
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 = DateValue('"+month+"-"+day+"-"+year+"') \n");  
    document.write("result = DatePart('ww', myDate) \n");  
    return result;  
}  
  
//+---------------------------------------------------  
//| 字符串转成日期类型   
//| 格式 MM/dd/YYYY MM-dd-YYYY YYYY/MM/dd YYYY-MM-dd  
//+---------------------------------------------------  
function StringToDate(DateStr)  
{   
  
    var converted = Date.parse(DateStr);  
    var myDate = new Date(converted);  
    if (isNaN(myDate))  
    {   
        //var delimCahar = DateStr.indexOf('/')!=-1?'/':'-';  
        var arys= DateStr.split('-');  
        myDate = new Date(arys[0],--arys[1],arys[2]);  
    }  
    return myDate;  
}
//+---------------------------------------------------  
//| 日期类型转换字符串   
//| 格式 MM/dd/YYYY MM-dd-YYYY YYYY/MM/dd YYYY-MM-dd  
//+---------------------------------------------------  
Date.prototype.toCommonCase=function(){
    var xYear=this.getYear();
    xYear=xYear+1900;
   
    var xMonth=this.getMonth()+1;
    if(xMonth<10){
        xMonth="0"+xMonth;
    }

    var xDay=this.getDate();
    if(xDay<10){
        xDay="0"+xDay;
    }
   
   // var xHours=this.getHours();
    //if(xHours<10){
    //    xHours="0"+xHours;
    //}

   // var xMinutes=this.getMinutes();
   // if(xMinutes<10){
   //     xMinutes="0"+xMinutes;
   // }

  //  var xSeconds=this.getSeconds();
   // if(xSeconds<10){
   //     xSeconds="0"+xSeconds;
   // }
  // return xYear+"-"+xMonth+"-"+xDay+" "+xHours+":"+xMinutes+":"+xSeconds;
    return xYear+"-"+xMonth+"-"+xDay;
}
 

分享到:
评论

相关推荐

    javascript后台调用的工具类

    3. **日期和时间处理**:JavaScript的Date对象可能与C#的DateTime类不完全兼容,工具类可能提供了适应后台环境的日期和时间处理方法。 4. **字符串操作**:提供常用的字符串处理函数,如格式化、查找、替换等。 5....

    uni-app一些工具类

    工具类(Utils)在任何开发项目中都扮演着至关重要的角色,它们通常包含了各种通用的功能和方法,以提高代码的复用性和可维护性。在这个"uni-app一些工具类"的压缩包中,我们可以预见到包含了一些实用的辅助函数,...

    淘淘商城07-工具类

    除了上述的几个主要类别,这个压缩包可能还包含了其他实用工具类,如日期时间处理(DateUtil)、字符串操作(StringUtil)、文件操作(FileUtil)、线程池管理(ThreadPoolUtil)等。这些工具类通常提供了静态方法...

    C# Util 实用工具类

    3. **Time**: 时间处理工具类帮助开发者进行日期和时间的格式化、比较、计算等操作。例如,可以提供方便的时间戳转换、日期格式化函数,以及检查时间间隔的辅助方法。 4. **Compress**: 压缩和解压缩是常见的数据...

    JS自定义封装时间范围工具类,小程序每周的范围时间【基于小程序实现】.rar

    本压缩包提供的"JS自定义封装时间范围工具类,小程序每周的范围时间"就是一个针对这种需求的解决方案。以下是对这个工具类的详细解释: 1. **时间范围工具类**:在JS中,一个自定义的工具类通常是一组功能相关的...

    安卓开发框架工具类相关-javascript开发android应用的快速框架.zip

    【标题】"安卓开发框架工具类相关-javascript开发android应用的快速框架.zip"涉及的核心知识点是使用JavaScript开发Android应用程序,这种技术通常被称为Hybrid开发。它允许开发者利用Web技术(如HTML5、CSS3和...

    工具类:res

    根据描述中的信息,“res”工具类特别提到了加密解密功能及其相关的JavaScript文件,这表明该工具类在处理敏感数据安全方面有着独特的优势。接下来我们将重点分析这一部分的内容。 ##### 1. 加密解密原理 - **加密*...

    js时间插件

    JavaScript时间插件是前端开发中常见的一种工具,主要用于在网页上提供用户友好的时间选择功能。layDate是一款高效、易用、功能丰富的JS时间插件,适用于各种网页应用,如表单时间输入、时间范围选择等场景。这款...

    webservice 服务调用工具类

    在实际应用中,我们可以利用这个工具类进行以下操作: 1. 调用远程API,获取数据,如天气预报、新闻资讯等。 2. 实现客户端与服务器之间的数据同步,如用户登录验证、数据上传下载。 3. 进行API测试,验证接口的正确...

    js-实现多功能时间日期时间段区间时间日期插件.rar

    在JavaScript编程领域,时间日期处理是一项常见的任务,尤其是在开发用户界面时。"js-实现多功能时间日期时间段区间时间日期插件.rar" 提供了一个高效、易用的解决方案,旨在简化前端开发者的工作。这款jQuery时间...

    用于简化数据函数promises等工作的JavaScript实用工具类

    在这个名为"TinkoffCreditSystems-utils.js-d06e5d8"的压缩包文件中,我们可以预期它包含了一个实用工具类,旨在简化与Promise相关的JavaScript工作。 这个工具类可能包含了一系列静态方法,这些方法针对常见的...

    Android-pareto.js-非常小直观和快速实用工具类集合的JavaScript库

    `pareto.js` 是这样一个小型、直观且高效的JavaScript库,它集合了一系列实用工具类,旨在简化开发者的工作流程,提高代码的可读性和执行效率。 **库的特性** 1. **小巧轻便**:`pareto.js` 的大小极小,这使得它...

    java实现部分工具类

    对于一些通用的操作,如日期时间处理、字符串操作、数学计算等,Java标准库已经提供了如`java.util.Date`、`java.lang.String`和`java.lang.Math`等工具类。 通过这些工具类,开发者可以更高效地构建Java Web应用...

    flex 学习项目中总结的时间处理工具类DateUtils

    `DateUtils`类通常是一个自定义的工具类,用于简化JavaScript或Java等语言中的日期和时间操作。在这个名为"flex 学习项目中总结的时间处理工具类DateUtils"的项目中,我们可能找到了一个针对Flex开发环境优化的日期...

    微信小程序工具类集合

    3. **时间与日期**:对日期和时间进行格式化是常见的需求,工具类可能包含`formatDate()`等函数,方便将日期转换为指定格式的字符串。 4. **图片处理**:微信小程序支持本地缓存图片,工具类可能会包含图片压缩、...

    java各种常用的工具类封装 源码

    7. **Struts2**: Struts2 是一个基于MVC设计模式的Web应用框架,它的工具类可能包括ActionSupport、Result、Interceptor等。例如,`Struts2Util` 可以帮助开发者更便捷地构建Action,处理请求和响应,以及进行视图...

    Android-各种实用Android工具类

    2. **日期时间工具类**:Android中的日期时间处理往往较为复杂,`DateUtils`可能包含格式化、解析日期时间、比较日期等功能,帮助简化这部分的代码。 3. **网络请求工具类**:在Android应用中,网络通信是常见的...

    MVC项目工具类.zip

    - **日期时间工具类**:格式化日期和时间,进行日期运算。 - **字符串工具类**:处理字符串操作,如拼接、替换、分割等。 - **数据验证工具类**:校验输入数据的有效性,防止SQL注入和XSS攻击。 - **分页工具类*...

    微信小程序开发-工具类-XCX-scaffold案例源码.zip

    在微信小程序的开发过程中,"工具类"是指一组具有特定功能的代码模块,它们可以被复用,帮助开发者简化常见的编程任务,比如数据处理、网络请求、日期时间操作等。XCX-scaffold案例源码很可能是为了解析和展示如何...

    C和C++常用工具类代码.pdf

    本节的内容涵盖了C和C++语言常用的数据结构和工具类,这些工具类广泛应用于软件开发的不同阶段,从数据存储、处理到界面展示,从命令行参数的解析到代码的自动生成,都能提供极大的便利和效率。掌握这些工具类的使用...

Global site tag (gtag.js) - Google Analytics