扩展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实现页面自适应
Jan 19 Javascript
jQuery学习笔记之jQuery.fn.init()的参数分析
Jun 09 Javascript
js实现点击图片将图片地址复制到粘贴板的方法
Feb 16 Javascript
jQuery的css() 方法使用指南
May 03 Javascript
Javascript中For In语句用法实例
May 14 Javascript
javascript实现禁止鼠标滚轮事件
Jul 24 Javascript
模仿password输入框的实现代码
Jun 07 Javascript
JavaScript仿微博发布信息案例
Nov 16 Javascript
微信小程序新增的拖动组件movable-view使用教程
May 20 Javascript
Canvas放置反弹效果随机图形(实例)
Aug 17 Javascript
Vue 进入/离开动画效果
Dec 26 Javascript
在vue中实现某一些路由页面隐藏导航栏的功能操作
Sep 21 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
Protoss建筑一览
2020/03/14 星际争霸
BBS(php & mysql)完整版(六)
2006/10/09 PHP
php读取xml实例代码
2010/01/28 PHP
php代码书写习惯优化小结
2013/06/20 PHP
php修改文件上传限制方法汇总
2015/04/07 PHP
javascript编程起步(第七课)
2007/01/10 Javascript
js 金额文本框实现代码
2012/02/14 Javascript
jquery动画4.升级版遮罩效果的图片走廊--带自动运行效果
2012/08/24 Javascript
jquery 实现上下滚动效果示例代码
2013/08/09 Javascript
DOM基础教程之模型中的模型节点
2015/01/19 Javascript
使用Meteor配合Node.js编写实时聊天应用的范例
2015/06/23 Javascript
JS实现的表格行鼠标点击高亮效果代码
2015/11/27 Javascript
JavaScript中实现无缝滚动、分享到侧边栏实例代码
2016/04/06 Javascript
javascript ES6中箭头函数注意细节小结
2017/02/17 Javascript
jQuery仿IOS弹出框插件
2017/02/18 Javascript
javascript DOM的详解及实例代码
2017/03/06 Javascript
JavaScript中使用webuploader实现上传视频功能(demo)
2017/04/10 Javascript
微信小程序图片宽100%显示并且不变形
2017/06/21 Javascript
ES6与CommonJS中的模块处理的区别
2018/06/13 Javascript
vue  elementUI 表单嵌套验证的实例代码
2019/11/06 Javascript
JavaScript 链表定义与使用方法示例
2020/04/28 Javascript
Nodejs 数组的队列以及forEach的应用详解
2021/02/25 NodeJs
Python中类的继承代码实例
2014/10/28 Python
Linux下通过python访问MySQL、Oracle、SQL Server数据库的方法
2016/04/23 Python
使用Python读写及压缩和解压缩文件的示例
2016/07/08 Python
使用python和pygame制作挡板弹球游戏
2019/12/03 Python
基于Python爬虫采集天气网实时信息
2020/06/05 Python
浅析python字符串前加r、f、u、l 的区别
2021/01/24 Python
CSS3 旋转立方体问题详解
2020/01/09 HTML / CSS
html5 video标签屏蔽右键视频另存为的js代码
2013/11/12 HTML / CSS
canvas学习总结三之绘制路径-线段
2019/01/31 HTML / CSS
Under Armour西班牙官网:美国知名的高端功能性运动品牌
2018/12/12 全球购物
甜品店创业计划书
2014/08/14 职场文书
2014入党积极分子批评与自我批评思想汇报
2014/09/20 职场文书
教师查摆问题自查报告
2014/10/11 职场文书
springboot使用Redis作缓存使用入门教程
2021/07/25 Redis