扩展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的缓存问题
Dec 13 Javascript
判断某个字符在一个字符串中是否存在的js代码
Feb 28 Javascript
JQuery判断radio(单选框)是否选中和获取选中值方法总结
Apr 15 Javascript
jQuery层动画定位滑动效果的方法
Apr 30 Javascript
JavaScript通过Date-Mask将日期转换成字符串的方法
Jun 04 Javascript
深入浅析javascript立即执行函数
Oct 23 Javascript
浅谈Javascript中的12种DOM节点类型
Aug 19 Javascript
详解vuelidate 对于vueJs2.0的验证解决方案
Mar 09 Javascript
微信小程序中子页面向父页面传值实例详解
Mar 20 Javascript
解决React Native端口号修改的方法
Jul 28 Javascript
vue 子组件和父组件传值的示例
Sep 11 Javascript
vue+elementUI中表格高亮或字体颜色改变操作
Nov 02 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模板之Phpbean的目录结构
2008/01/10 PHP
一个PHP缓存类代码(附详细说明)
2011/06/09 PHP
深入解析PHP的引用计数机制
2013/06/14 PHP
ThinkPHP利用PHPMailer实现邮件发送实现代码
2013/09/26 PHP
PHP中$_SERVER的详细参数与说明介绍
2013/10/26 PHP
使用php伪造referer的方法 利用referer防止图片盗链
2014/01/20 PHP
PHP 中 DOMDocument保存xml时中文出现乱码问题的解决方案
2016/09/19 PHP
使用jQuery.wechat构建微信WEB应用
2014/10/09 Javascript
JSON字符串和对象之间的转换详解
2015/05/26 Javascript
每天一篇javascript学习小结(String对象)
2015/11/18 Javascript
遍历json 对象的属性并且动态添加属性的实现
2016/12/02 Javascript
JavaScript中object和Object的区别(详解)
2017/02/27 Javascript
通过npm引用的vue组件使用详解
2017/03/02 Javascript
Node.JS利用PhantomJs抓取网页入门教程
2017/05/19 Javascript
webpack4打包vue前端多页面项目
2018/09/17 Javascript
Vue自定义全局Toast和Loading的实例详解
2019/04/18 Javascript
Vue Render函数原理及代码实例解析
2020/07/30 Javascript
JavaScript构造函数原理及实现流程解析
2020/11/19 Javascript
[53:52]EG vs VGJ.T 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
[50:05]VGJ.S vs OG 2018国际邀请赛淘汰赛BO3 第二场 8.22
2018/08/23 DOTA
python矩阵/字典实现最短路径算法
2019/01/17 Python
python安装virtualenv虚拟环境步骤图文详解
2019/09/18 Python
Django学习之文件上传与下载
2019/10/06 Python
基于python操作ES实例详解
2019/11/16 Python
使用IPython或Spyder将省略号表示的内容完整输出
2020/04/20 Python
Ariat英国官网:为世界顶级马术运动员制造最优质的鞋类和服装
2020/02/14 全球购物
delegate与普通函数的区别
2014/01/22 面试题
中专毕业生求职简历的自我评价
2013/10/21 职场文书
工程管理专业个人求职信范文
2013/12/07 职场文书
简历中的自我评价怎么写
2014/01/29 职场文书
《雨霖铃》教学反思
2014/02/22 职场文书
机关党员三严三实心得体会
2014/10/13 职场文书
2014年质量管理工作总结
2014/12/01 职场文书
街道社区活动报告
2015/02/05 职场文书
辞职信怎么写
2015/02/27 职场文书
2015年财务部年度工作总结
2015/05/19 职场文书