`

js 时间处理 扩展方法

阅读更多

 

  /*

   函数:把字符串转换为日期对象

   参数:yyyy-mm-dd或yyyy/mm/dd形式的字符串

   返回:Date对象

   注:IE下不支持直接实例化日期对象,如new Date("2012-04-03")

    */

 

  Date.prototype.convertDate = function (date) {
        var flag = true;
           var newDate = new Date();
           var dateArray=[];
 
           if(date.indexOf("-")!=-1){
                    dateArray = date.split("-");
                    newDate.setFullYear(dateArray[0], dateArray[1] - 1, dateArray[2]);
                    newDate.setHours(0, 0, 0);
           }else if(date.indexOf("/")!=-1){
                    dateArray = date.split("/");
                    newDate.setFullYear(dateArray[0], dateArray[1] - 1, dateArray[2]);
                     newDate.setHours(0, 0, 0);
           }else{
                       newDate = null;
           }
           return newDate;
   };

 

 

  /*

   函数:计算两个日期之间的差值

   参数:date是日期对象

         flag:ms-毫秒,s-秒,m-分,h-小时,d-天,M-月,y-年

   返回:当前日期和date两个日期相差的毫秒/秒/分/小时/天

   */

 

Date.prototype.dateDiff = function (date, flag) {
     var msCount;
     var diff = this.getTime() - date.getTime();
     switch (flag) {
         case "ms":
             msCount = 1;
             break;
         case "s":
             msCount = 1000;
             break;
         case "m":
             msCount = 60 * 1000;
             break;
         case "h":
             msCount = 60 * 60 * 1000;
             break;
         case "d":
             msCount = 24 * 60 * 60 * 1000;
             break;
     }
     return Math.floor(diff / msCount);
 };

 

 

 

 

/*

函数:判断一个年份是否为闰年

返回:是否为闰年

 */

 

Date.prototype.isLeapYear = function () {
    var year = this.getFullYear();
    return (year % 4 == 0) && (year % 100 != 0 || year % 400 == 0);
}

 

 

 

 /*

 函数:格式化日期

 参数:formatStr-格式化字符串

         d:将日显示为不带前导零的数字,如1

         dd:将日显示为带前导零的数字,如01

         ddd:将日显示为缩写形式,如Sun

         dddd:将日显示为全名,如Sunday

         M:将月份显示为不带前导零的数字,如一月显示为1

         MM:将月份显示为带前导零的数字,如01

         MMM:将月份显示为缩写形式,如Jan

         MMMM:将月份显示为完整月份名,如January

         yy:以两位数字格式显示年份

         yyyy:以四位数字格式显示年份

         h:使用12小时制将小时显示为不带前导零的数字,注意||的用法

         hh:使用12小时制将小时显示为带前导零的数字

         H:使用24小时制将小时显示为不带前导零的数字

         HH:使用24小时制将小时显示为带前导零的数字

         m:将分钟显示为不带前导零的数字

         mm:将分钟显示为带前导零的数字

         s:将秒显示为不带前导零的数字

         ss:将秒显示为带前导零的数字

         l:将毫秒显示为不带前导零的数字

         ll:将毫秒显示为带前导零的数字

         tt:显示am/pm

         TT:显示AM/PM

 返回:格式化后的日期

 */

 

Date.prototype.format = function (formatStr) {
     var date = this;
 
     /*
     函数:填充0字符
     参数:value-需要填充的字符串, length-总长度
     返回:填充后的字符串
     */
     var zeroize = function (value, length) {
         if (!length) {
             length = 2;
         }
         value = new String(value);
         for (var i = 0, zeros = ''; i < (length - value.length); i++) {
             zeros += '0';
         }
         return zeros + value;
     };
 
     return formatStr.replace(/"[^"]*"|'[^']*'|\b(?:d{1,4}|M{1,4}|yy(?:yy)?|([hHmstT])\1?|[lLZ])\b/g, function($0) {
         switch ($0) {
             case 'd': return date.getDate();
             case 'dd': return zeroize(date.getDate());
             case 'ddd': return ['Sun', 'Mon', 'Tue', 'Wed', 'Thr', 'Fri', 'Sat'][date.getDay()];
             case 'dddd': return ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'][date.getDay()];
             case 'M': return date.getMonth() + 1;
             case 'MM': return zeroize(date.getMonth() + 1);
             case 'MMM': return ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'][date.getMonth()];
             case 'MMMM': return ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'][date.getMonth()];
             case 'yy': return new String(date.getFullYear()).substr(2);
             case 'yyyy': return date.getFullYear();
             case 'h': return date.getHours() % 12 || 12;
             case 'hh': return zeroize(date.getHours() % 12 || 12);
             case 'H': return date.getHours();
             case 'HH': return zeroize(date.getHours());
             case 'm': return date.getMinutes();
             case 'mm': return zeroize(date.getMinutes());
             case 's': return date.getSeconds();
             case 'ss': return zeroize(date.getSeconds());
             case 'l': return date.getMilliseconds();
             case 'll': return zeroize(date.getMilliseconds());
             case 'tt': return date.getHours() < 12 ? 'am' : 'pm';
             case 'TT': return date.getHours() < 12 ? 'AM' : 'PM';
         }
     });
 }
 
 
   document.writeln(  new Date().format("yyyy-MM-dd HH:MM:ss")+"</br>"); 
   document.writeln(  new Date().convertDate("2011/7/25")+"</br>"); 
   document.writeln(  new Date().isLeapYear("2011/7/25")+"</br>"); 
   document.writeln( new Date().dateDiff(new Date().convertDate("2012/7/25") , 'h'));
 
 

 

 

 
 
// 时间的对比  兼容ie火狐 
//两个时间对比 
function compareTime(startTime , endTime){
 
	var beginTimes = startTime.split('-');
	//var beginTimeTemp = beginTimes[1]+'-'+beginTimes[2]+'-'+beginTimes[0];
	var endTimes = endTime.split('-');
	if(beginTimes.length!=3 || endTimes.length!=3 ){
		return false;
	}
	//var endTimeTemp = endTimes[1]+'-'+endTimes[2]+'-'+endTimes[0];
	var beginT = new Date(beginTimes[0],beginTimes[1],beginTimes[2]).getTime();
	var endT = new Date(endTimes[0],endTimes[1],endTimes[2] ).getTime();
	var len = ( beginT- endT )/3600/1000;
	if(len>=0){
		return true;
	}else{
		return false;
	}
}
 
 
 
 
分享到:
评论

相关推荐

    JS处理json日期格式化问题

    对于从C#返回的日期字段,当进行JSON序列化后,在前台JS里显示的并不是真正的日期,这让我们感觉很不爽,我们不可能为了这东西,把所有日期字段都变成string吧,所以,找了一个JS的扩展方法,来实现这个功能 ...

    扩展微信小程序框架功能:日期时间Moment.js

    Moment.js是一个JavaScript的日期、时间处理工具类,其对于JavaScript的日期时间处理功能非常强悍和全面。可以用在浏览器环境中使用,也可以在Node.js中。 Moment.js Moment.js对Date对象的扩展不是使用Date....

    源文件程序天下JAVASCRIPT实例自学手册

    1.7 处理不支持JavaScript脚本的情况 1.7.1 使用&lt;!--和--&gt;标记对直接屏蔽法 1.7.2 使用和标记对给出提示信息 1.8 JavaScript的实现基础 1.8.1 ECMAScript 1.8.2 DOM 1.8.3 BOM 1.9 客户端与服务器端脚本 1.10 ...

    JavaScript详解(第2版)

     13.6.7 HTML事件处理函数和JavaScript事件方法   13.6.8 onError事件   13.7 event对象   13.7.1 捕获和冒泡(滴漏和冒泡)   13.7.2 事件对象属性   13.7.3 使用事件对象属性   13.7.4 将事件...

    de.js 1.6( 含chm帮助)

    轻量级的javascript扩展函数库,某些场景下可替代jquery。更贴近原生方法的编程习惯;支持类似XPath的选择器;扩展了Date类型,处理时间类型更方便等等。

    JavaScript基础和实例代码

    1.7 处理不支持JavaScript脚本的情况 1.7.1 使用&lt;!--和--&gt;标记对直接屏蔽法 1.7.2 使用和标记对给出提示信息 1.8 JavaScript的实现基础 1.8.1 ECMAScript 1.8.2 DOM 1.8.3 BOM 1.9 客户端与服务器端脚本 1.10 ...

    node-datetime:javascript的扩展Date对象。 它可以按天,小时和格式等处理偏移量

    &gt; javascript的扩展Date对象。 按天和小时处理犯罪。 内置格式化功能。 基于时间的值计算。安装通过npm安装npm install node-datetime 在浏览器中使用node-datetime 为了在浏览器中使用node-datetime ,您将需要...

    storage:一个基于HTML5 Web本地存储的扩展解决方案,虽然IE早期不支持本地存储(localStorage),但是可以通过userData来实现更多的本地数据存储

    localStorage本身没有失效时间,Storage.js对其添加了失效时间的扩展 userData只能操作当前Path下的数据,为了方便不同Path下本地数据的共享,Storage.js通过htmlfile创建iframe指向到当前域根目录的favcion.i

    程序天下:JavaScript实例自学手册

    13.3 最简单的获取时间的方法 13.4 随日期变换的文本 13.5 输入框的默认值为今天 13.6 时间相加 13.7 5秒后消失的广告 13.8 12小时制和24小时制的转换 13.9 标题栏显示时间 13.10 超过时间页面自动跳转 13.11 分时段...

    threex.colliders:处理碰撞体的 Three.js 游戏扩展

    如果时间允许,将添加球体。 然后将它们添加到THREEx.ColliderSystem和.computeAndNotify()所有的碰撞。 当 2 个碰撞器开始相互碰撞时,事件 'contactEnter' 被发送到每个侦听器。 当这些碰撞器不断碰撞时,将发送...

    《程序天下:JavaScript实例自学手册》光盘源码

    13.3 最简单的获取时间的方法 13.4 随日期变换的文本 13.5 输入框的默认值为今天 13.6 时间相加 13.7 5秒后消失的广告 13.8 12小时制和24小时制的转换 13.9 标题栏显示时间 13.10 超过时间页面自动跳转 13.11 分时段...

    大名鼎鼎SWFUpload- Flash+JS 上传

    每个文件都是单独上传的,这就保证了服务端脚本能够在一个时间点更容易地处理单个文件。虽然Flash提供了上传服务,但是页面并不会提交或者重新载入。相比于标准的HTML Form,SWFUpload的使用方式更像是AJAX程序,...

    javascript网页特效实例大全

    6.16 向外扩展的图片 152 6.17 鼠标悬停改变图片 153 6.18 图片模糊效果 155 6.19 图片的探照灯效果 156 6.20 跟随屏幕移动的图片 157 6.21 图片的模糊显示 158 6.22 图片的渐隐渐现 159 6.23 一堆开放的花朵...

    image-manipulation-canvas:带画布的Javascript图像处理库

    随着时间的流逝,我希望它可以扩展到包括重绘图像的更好方法,并包括更多效果以及一些基本的Computer Vision功能。 执行 首先,您将必须包含imageManipulation.min.js文件。 您可以在您的&lt;head&gt;标记中或紧接&...

    javascript写的windows资源管理器

    因为时间的关系只提供了局部份功能,还有很多代码和函数都没有进行优化,(注释也较少)比如错误处理,浏览器嗅探等。 这里需要说明的是很少用到了innerHTML和innerTEXT两个方法,这是微软提供的专利方法,还...

    通用FormValid1.0-js验证框架

    isTime 是否为时间格式 isDate 是否为日期格式 isEmail 必须是Email格式 isPhone 是否为电话号码 isMobile 是否为手机号码 isTelephone 是否为电话或手机号码 isIdCard 是否为身份证号码 isMoney 是否为货币值 isZip...

    AspBox-v1.3.2工具API

    AspBox是一个方便快速开发ASP框架,AspBox提供了大量实用的ASP通用过程及方法和子类,可以简化大部分的ASP操作。 AspBox还可以进行拓展子类对象以增强自身功能。封装严谨,层层嵌套,提高了代码重复利用多次利用。 ...

    sonar-javascript-integrationtests:用JavaScript项目的集成测试结果(测试数量,成功百分比等)扩展SonarQube

    使用针对javascript项目(使用SonarQube 5.1.2测试)的集成测试结果(测试数量,成功百分比等)扩展SonarQube。 用法 将插件jar上传到SonarQube的“扩展/插件”文件夹。 使用声纳属性“ sonar.javascript....

    日期处理的js库(迷你版)–自建js库总结

    js建库准则 js建库准则(Dean Edwards在开发base2时候的一些体会)翻译版:http://biaoge.me/2009/12/239 js建库学习好地方:http://ejohn.org/blog/building-a-javascript-library/ 假如你有时间,再看一个

    node-errors:预定义的扩展错误类,可以在任何基于node.js的框架中使用,以轻松处理不同的错误情况

    扩展的Node.JS错误类,使您可以轻松处理Web应用程序中的常见错误。 预定义的错误消息和代码将为您节省一些时间和样板代码。 此外,它包含一个通用的错误处理程序中间件,该中间件对基于已传递的错误的响应形成了...

Global site tag (gtag.js) - Google Analytics