扩展javascript的Date方法实现代码(prototype)


Posted in Javascript onNovember 20, 2010

最近项目的部分功能正在重构,前端也基本上推翻了原来的设计,在之前半年的积累上有了新的方案。这几天在做前端的重构和设计,遇到了一些问题。因为这个模块最主要的还是对时间的控制,大量的操作js的Date对象,可是js原生的Date方法太少了,操作起来太不方便。于是打算扩展下Date的prototype。

长期从事C#的开发,被C#影响着我的思维。C#中DateTime的操作就很方便,于是就参考它对js的Date做了扩展。

//将指定的毫秒数加到此实例的值上 
Date.prototype.addMilliseconds = function (value) { 
var millisecond = this.getMilliseconds(); 
this.setMilliseconds(millisecond + value); 
return this; 
}; 
//将指定的秒数加到此实例的值上 
Date.prototype.addSeconds = function (value) { 
var second = this.getSeconds(); 
this.setSeconds(second + value); 
return this; 
}; 
//将指定的分钟数加到此实例的值上 
Date.prototype.addMinutes = function (value) { 
var minute = this.addMinutes(); 
this.setMinutes(minute + value); 
return this; 
}; 
//将指定的小时数加到此实例的值上 
Date.prototype.addHours = function (value) { 
var hour = this.getHours(); 
this.setHours(hour + value); 
return this; 
}; 
//将指定的天数加到此实例的值上 
Date.prototype.addDays = function (value) { 
var date = this.getDate(); 
this.setDate(date + value); 
return this; 
}; 
//将指定的星期数加到此实例的值上 
Date.prototype.addWeeks = function (value) { 
return this.addDays(value * 7); 
}; 
//将指定的月份数加到此实例的值上 
Date.prototype.addMonths = function (value) { 
var month = this.getMonth(); 
this.setMonth(month + value); 
return this; 
}; 
//将指定的年份数加到此实例的值上 
Date.prototype.addYears = function (value) { 
var year = this.getFullYear(); 
this.setFullYear(year + value); 
return this; 
}; 
//格式化日期显示 format="yyyy-MM-dd hh:mm:ss"; 
Date.prototype.format = function (format) { 
var o = { 
"M+": this.getMonth() + 1, //month 
"d+": this.getDate(), //day 
"h+": this.getHours(), //hour 
"m+": this.getMinutes(), //minute 
"s+": this.getSeconds(), //second 
"q+": Math.floor((this.getMonth() + 3) / 3), //quarter 
"S": this.getMilliseconds() //millisecond 
} 
if (/(y+)/.test(format)) { 
format = format.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length)); 
} 
for (var k in o) { 
if (new RegExp("(" + k + ")").test(format)) { 
format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length)); 
} 
} 
return format; 
}

使用方法我想应该不用多说了,就是:
var date = new Date(); 
date.addHours(1); 
date.addYears(2); 
document.write(date.format('yyyy-MM-dd hh:mm:ss'));

希望这个扩展方法可以帮助到大家。
Javascript 相关文章推荐
javascript AutoScroller 函数类
May 29 Javascript
IE6,IE7,IE8下使用Javascript记录光标选中范围(已补全)
Aug 28 Javascript
js window.open弹出新的网页窗口
Jan 16 Javascript
详解JavaScript中的构造器Constructor模式
Jan 14 Javascript
jQuery中借助deferred来请求及判断AJAX加载的实例讲解
May 24 Javascript
node.js中 stream使用教程
Aug 28 Javascript
jquery+css3问卷答题卡翻页动画效果示例
Oct 26 Javascript
jQuery点击头像上传并预览图片
Feb 23 Javascript
JavaSctit 利用FileReader和滤镜上传图片预览功能
Sep 05 Javascript
基于html+css+js实现简易计算器代码实例
Feb 28 Javascript
给原生html中添加水印遮罩层的实现示例
Apr 02 Javascript
vue-cli4.5.x快速搭建项目
May 30 Vue.js
javascript AOP 实现ajax回调函数使用比较方便
Nov 20 #Javascript
AJAX异步从优酷专辑中采集所有视频及信息(JavaScript代码)
Nov 20 #Javascript
javascript来定义类的规范小结
Nov 19 #Javascript
Javascript面象对象成员、共享成员变量实验
Nov 19 #Javascript
js 创建快捷方式的代码(fso)
Nov 19 #Javascript
javascript 函数参数限制说明
Nov 19 #Javascript
Javascript的并行运算实现代码
Nov 19 #Javascript
You might like
海贼王:最美的悬赏令!
2020/03/02 日漫
ThinkPHP空模块和空操作详解
2014/06/30 PHP
PHP自动补全表单的两种方法
2017/03/06 PHP
PHP数据库操作三:redis用法分析
2017/08/16 PHP
js replace正则表达式应用案例讲解
2013/01/17 Javascript
jQuery中操控hidden、disable等无值属性的方法
2014/01/06 Javascript
IE浏览器下PNG相关功能
2015/07/05 Javascript
JavaScript实现删除,移动和复制文件的方法
2015/08/05 Javascript
基于Bootstrap实现图片轮播效果
2016/05/22 Javascript
jQuery异步提交表单的两种方式
2016/09/13 Javascript
JavaScript实现定时页面跳转功能示例
2017/02/14 Javascript
vue2.0使用Sortable.js实现的拖拽功能示例
2017/02/21 Javascript
JS/jquery实现一个网页内同时调用多个倒计时的方法
2017/04/27 jQuery
jQuery Ajax 实现分页 kkpager插件实例代码
2017/08/10 jQuery
利用vue.js实现被选中状态的改变方法
2018/02/08 Javascript
轻松搞定jQuery+JSONP跨域请求的解决方案
2018/03/06 jQuery
使用Vuex解决Vue中的身份验证问题
2018/09/28 Javascript
Python Web框架Pylons中使用MongoDB的例子
2013/12/03 Python
Python的for和break循环结构中使用else语句的技巧
2016/05/24 Python
Django如何防止定时任务并发浅析
2019/05/14 Python
python数据类型可变不可变知识点总结
2020/03/06 Python
浅析python 动态库m.so.1.0错误问题
2020/05/09 Python
如何解决pycharm调试报错的问题
2020/08/06 Python
Python unittest discover批量执行代码实例
2020/09/08 Python
python安装sklearn模块的方法详解
2020/11/28 Python
用python批量下载apk
2020/12/29 Python
matplotlib绘制鼠标的十字光标的实现(自定义方式,官方实例)
2021/01/10 Python
Python爬虫获取op.gg英雄联盟英雄对位胜率的源码
2021/01/29 Python
深入理解css中vertical-align属性
2017/04/18 HTML / CSS
美国成衣女装品牌:CHICO’S
2016/09/19 全球购物
世界上最大的高分辨率在线图片库:Alamy
2018/07/07 全球购物
关爱留守儿童标语
2014/06/18 职场文书
材料化学专业求职信
2014/07/15 职场文书
缓刑人员思想汇报500字
2014/09/12 职场文书
党的群众路线对照检查材料(个人)
2014/09/24 职场文书
MYSQL数据库使用UTF-8中文编码乱码的解决办法
2021/05/26 MySQL