扩展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使用HTML5的window.postMessage实现跨域通信例子
Apr 11 Javascript
javascript快速排序算法详解
Sep 17 Javascript
JS往数组中添加项性能分析
Feb 25 Javascript
JavaScript jquery及AJAX小结
Jan 24 Javascript
基于Echarts 3.19 制作常用的图形(非静态)
May 19 Javascript
jQuery 中ajax异步调用的四种方式
Jun 28 Javascript
Bootstrap3 多个模态对话框无法显示的解决方案
Feb 23 Javascript
Vue页面骨架屏注入方法
May 13 Javascript
jQuery实现菜单的显示和隐藏功能示例
Jul 24 jQuery
vue 循环加载数据并获取第一条记录的方法
Sep 26 Javascript
学习 Vue.js 遇到的那些坑
Feb 02 Vue.js
React如何创建组件
Jun 27 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
PHP网页游戏学习之Xnova(ogame)源码解读(四)
2014/06/23 PHP
Gambit vs ForZe BO3 第一场 2.13
2021/03/10 DOTA
javascript调试之DOM断点调试法使用技巧分享
2014/04/15 Javascript
一个简单的全屏图片上下打开显示网页效果示例
2014/07/08 Javascript
JS 获取鼠标左右键的键值方法
2014/10/11 Javascript
node.js中的fs.futimesSync方法使用说明
2014/12/17 Javascript
JS显示下拉列表框内全部元素的方法
2015/03/31 Javascript
详解AngularJS中的表格使用
2015/06/16 Javascript
js编写贪吃蛇的小游戏
2020/08/24 Javascript
AngularJS转换响应内容
2016/01/27 Javascript
JavaScript实现简洁的俄罗斯方块完整实例
2016/03/01 Javascript
jQuery短信验证倒计时功能实现方法详解
2016/05/25 Javascript
AngularJS中的缓存使用
2017/01/11 Javascript
JavaScript函数式编程(Functional Programming)声明式与命令式实例分析
2019/05/21 Javascript
JS实现canvas简单小画板功能
2020/06/23 Javascript
Python实现包含min函数的栈
2016/04/29 Python
Python实现快速傅里叶变换的方法(FFT)
2018/07/21 Python
Python sorted函数详解(高级篇)
2018/09/18 Python
python遍历文件夹找出文件夹后缀为py的文件方法
2018/10/21 Python
Python编写合并字典并实现敏感目录的小脚本
2019/02/26 Python
Python函数基础实例详解【函数嵌套,命名空间,函数对象,闭包函数等】
2019/03/30 Python
python字符串替换第一个字符串的方法
2019/06/26 Python
python中selenium操作下拉滚动条的几种方法汇总
2019/07/14 Python
python使用nibabel和sitk读取保存nii.gz文件实例
2020/07/01 Python
PyQt5中QSpinBox计数器的实现
2021/01/18 Python
用Python制作音乐海报
2021/01/26 Python
Java语言程序设计测试题选择题部分
2014/04/03 面试题
学生就业推荐信
2013/11/13 职场文书
教师演讲稿大全
2014/05/16 职场文书
我与祖国共奋进演讲稿
2014/09/13 职场文书
公司领导班子群众路线四风问题对照检查材料
2014/10/02 职场文书
2015年护士节活动策划方案
2015/05/04 职场文书
教你如何使用Python开发一个钉钉群应答机器人
2021/06/21 Python
Python中22个万用公式的小结
2021/07/21 Python
A22国内电台短波广播频率表
2022/05/10 无线电
Mysql中常用的join连接方式
2022/05/11 MySQL