扩展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 相关文章推荐
原始XMLHttpRequest方法详情回顾
Nov 28 Javascript
jQuery使用hide方法隐藏页面上指定元素的方法
Mar 30 Javascript
JS实现完全语义化的网页选项卡效果代码
Sep 15 Javascript
js获取表格的行数和列数的方法
Oct 23 Javascript
深入剖析JavaScript:Object类型
May 10 Javascript
Bootstrap幻灯片轮播图支持触屏左右手势滑动的实现方法
Oct 13 Javascript
js Canvas绘制圆形时钟教程
Feb 06 Javascript
vue组件传递对象中实现单向绑定的示例
Feb 28 Javascript
Node错误处理笔记之挖坑系列教程
Jun 05 Javascript
解决Vue2.0中使用less给元素添加背景图片出现的问题
Sep 03 Javascript
实例详解带参数的 npm script
May 28 Javascript
微信小程序如何引用外部js,外部样式,公共页面模板
Jul 23 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
基于header的一些常用指令详解
2013/06/06 PHP
thinkPHP+PHPExcel实现读取文件日期的方法(含时分秒)
2016/07/07 PHP
php基于session锁防止阻塞请求的方法分析
2017/08/07 PHP
Alliance vs AM BO3 第二场2.13
2021/03/10 DOTA
jquery中eq和get的区别与使用方法
2011/04/14 Javascript
JavaScript中的setUTCDate()方法使用详解
2015/06/11 Javascript
用v-html解决Vue.js渲染中html标签不被解析的问题
2016/12/14 Javascript
javascript ASCII和Hex互转的实现方法
2016/12/27 Javascript
用nodejs搭建websocket服务器
2017/01/23 NodeJs
如何用JS/HTML将时间戳转换为“xx天前”的形式
2017/02/06 Javascript
vue+swiper实现组件化开发的实例代码
2017/10/26 Javascript
jQuery实现弹窗下底部页面禁止滑动效果
2017/12/19 jQuery
boostrap模态框二次弹出清空原有内容的方法
2018/08/10 Javascript
详解vue 项目白屏解决方案
2018/10/31 Javascript
记录一次完整的react hooks实践
2019/03/11 Javascript
[04:50]DOTA2亚洲邀请赛小组赛第四日 TOP10精彩集锦
2015/02/02 DOTA
[01:14:35]DOTA2上海特级锦标赛B组资格赛#1 Alliance VS Fnatic第一局
2016/02/26 DOTA
[54:56]DOTA2上海特级锦标赛主赛事日 - 5 总决赛Liquid VS Secret第三局
2016/03/06 DOTA
python使用beautifulsoup从爱奇艺网抓取视频播放
2014/01/23 Python
Python numpy 常用函数总结
2017/12/07 Python
值得收藏,Python 开发中的高级技巧
2018/11/23 Python
Python判断对象是否相等及eq函数的讲解
2019/02/25 Python
python高斯分布概率密度函数的使用详解
2019/07/10 Python
Python logging日志库空间不足问题解决
2020/09/14 Python
python中re模块知识点总结
2021/01/17 Python
KARATOV珠宝在线商店:俄罗斯珠宝品牌
2019/03/13 全球购物
Madda Fella官网:美国冒险家服装品牌
2020/01/16 全球购物
幼儿园教师培训制度
2014/01/16 职场文书
文秘大学生求职信
2014/02/25 职场文书
安全责任书范本
2014/04/15 职场文书
清明节主题班会
2015/08/14 职场文书
2016入党心得体会范文
2016/01/06 职场文书
2016年第十九届推普周活动总结
2016/04/06 职场文书
导游词之云南丽江-泸沽湖
2019/09/26 职场文书
MySQL表类型 存储引擎 的选择
2021/11/11 MySQL
MySQL RC事务隔离的实现
2022/03/31 MySQL