扩展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 相关文章推荐
百度Popup.js弹出框进化版 拖拽小框架发布 兼容IE6/7/8,Firefox,Chrome
Apr 13 Javascript
纯js实现仿QQ邮箱弹出确认框
Apr 29 Javascript
深入理解逻辑表达式的用法 与或非的用法
Jun 06 Javascript
第一次接触神奇的前端框架vue.js
Dec 01 Javascript
微信小程序 图片上传实例详解
May 05 Javascript
js判断数组是否包含某个字符串变量的实例
Nov 24 Javascript
利用jqprint插件打印页面内容的实现方法
Jan 09 Javascript
用vue写一个仿简书的轮播图的示例代码
Mar 13 Javascript
Vue脚手架的简单使用实例
Jul 10 Javascript
layui 表格的属性的显示转换方法
Aug 14 Javascript
layer弹窗在键盘按回车将反复刷新的实现方法
Sep 25 Javascript
在vue中给后台接口传的值为数组的格式代码
Nov 12 Javascript
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
JQuery1.4+ Ajax IE8 内存泄漏问题
2010/10/15 Javascript
深入理解JavaScript系列(9) 根本没有“JSON对象”这回事!
2012/01/15 Javascript
JavaScript 学习笔记之操作符
2015/01/14 Javascript
js实现动态加载脚本的方法实例汇总
2015/11/02 Javascript
js闭包引起的事件注册问题介绍
2016/03/29 Javascript
关于Ajax的原理以及代码封装详解
2017/09/08 Javascript
微信小程序 页面滑动事件的实例详解
2017/10/12 Javascript
使用vue-cli创建项目的图文教程(新手入门篇)
2018/05/02 Javascript
详解处理Vue单页面应用SEO的另一种思路
2018/11/09 Javascript
从理论角度讨论JavaScript闭包
2019/04/03 Javascript
Django模板继承 extend标签实例代码详解
2019/05/16 Javascript
jqGrid表格底部汇总、合计行footerrow处理
2019/08/21 Javascript
vue.js实现三级菜单效果
2019/10/19 Javascript
JS中==、===你分清楚了吗
2020/03/04 Javascript
JavaScript多种图形实现代码实例
2020/06/28 Javascript
[01:44]剑指西雅图 展望TI之CIS战队专访
2014/06/25 DOTA
python网络爬虫采集联想词示例
2014/02/11 Python
Python中多线程thread与threading的实现方法
2014/08/18 Python
Python实现Linux下守护进程的编写方法
2014/08/22 Python
Python利用正则表达式匹配并截取指定子串及去重的方法
2015/07/30 Python
python并发编程之多进程、多线程、异步和协程详解
2016/10/28 Python
Python实现按中文排序的方法示例
2018/04/25 Python
使用TensorFlow对图像进行随机旋转的实现示例
2020/01/20 Python
美国顶级奢侈茶:Mighty Leaf Tea(美泰茶)
2016/11/26 全球购物
JD Sports意大利:英国篮球和运动时尚的领导者
2017/10/29 全球购物
百思买加拿大:Best Buy Canada
2018/03/20 全球购物
澳大利亚现代波西米亚风格女装网站:Bohemian Traders
2018/04/16 全球购物
澳大利亚当地最大的时装生产商:Cue
2018/08/06 全球购物
美国现代家具购物网站:LexMod
2019/01/09 全球购物
2014年安全生产大检查方案
2014/05/13 职场文书
留学生求职信
2014/06/03 职场文书
我们的节日中秋节活动总结
2015/03/23 职场文书
成品仓库管理员岗位职责
2015/04/09 职场文书
2015年社区教育工作总结
2015/05/13 职场文书
四风之害观后感
2015/06/09 职场文书
基于Redis过期事件实现订单超时取消
2021/05/08 Redis