扩展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 相关文章推荐
汉化英文版的Dreamweaver CS5并自动提示jquery
Nov 25 Javascript
JS this作用域以及GET传输值过长的问题解决方法
Aug 06 Javascript
原生JS实现加入收藏夹的代码
Oct 24 Javascript
Document:getElementsByName()使用方法及示例
Oct 28 Javascript
js点击出现悬浮窗效果不使用JQuery插件
Jan 20 Javascript
jquery默认校验规则整理
Mar 24 Javascript
深入理解JavaScript系列(48):对象创建模式(下篇)
Mar 04 Javascript
JavaScript实现简单获取当前网页网址的方法
Nov 09 Javascript
JS正则表达式学习之贪婪和非贪婪模式实例总结
Dec 26 Javascript
Vue封装Swiper实现图片轮播效果
Feb 06 Javascript
layui清空,重置表单数据的实例
Sep 12 Javascript
vue css 引入asstes中的图片无法显示的四种解决方法
Mar 16 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创建sprite
2014/02/11 PHP
ThinkPHP关于session的操作方法汇总
2014/07/18 PHP
PHP魔术方法__GET、__SET使用实例
2014/11/25 PHP
PHP操作redis实现的分页列表,新增,删除功能封装类与用法示例
2018/08/04 PHP
基于Jquery的回车成tab焦点切换效果代码(Enter To Tab )
2010/11/14 Javascript
js数组Array sort方法使用深入分析
2013/02/21 Javascript
JS实现随机化快速排序的实例代码
2013/08/01 Javascript
使用indexOf等在JavaScript的数组中进行元素查找和替换
2013/09/18 Javascript
jQuery实现可收缩展开的级联菜单实例代码
2013/11/27 Javascript
下拉列表select 由左边框移动到右边示例
2013/12/04 Javascript
利用JS解决ie6不支持max-width,max-height问题的方法
2014/01/02 Javascript
动态创建script标签实现跨域资源访问的方法介绍
2014/02/28 Javascript
将HTML格式的String转化为HTMLElement的实现方法
2014/08/07 Javascript
JavaScript仿静态分页实现方法
2015/08/04 Javascript
JS实现的车标图片提示效果代码
2015/10/10 Javascript
jQuery使用正则表达式限制文本框只能输入数字
2016/06/18 Javascript
jQuery实现隔行变色的方法分析(对比原生JS)
2016/11/18 Javascript
在layui tab控件中载入外部html页面的方法
2019/09/04 Javascript
js、jquery实现列表模糊搜索功能过程解析
2020/03/27 jQuery
[01:00]选手抵达华西村 整装待发备战2016国际邀请赛中国区预选赛
2016/06/25 DOTA
将TensorFlow的模型网络导出为单个文件的方法
2018/04/23 Python
Django获取该数据的上一条和下一条方法
2019/08/12 Python
Python递归调用实现数字累加的代码
2020/02/25 Python
给ubuntu18安装python3.7的详细教程
2020/06/08 Python
Python绘制数码晶体管日期
2021/02/19 Python
介绍一下Make? 为什么使用make
2016/07/31 面试题
《小小竹排画中游》教学反思
2014/02/26 职场文书
食品科学与工程专业毕业生求职信范文
2014/07/21 职场文书
乡镇党的群众路线对照检查材料
2014/09/24 职场文书
幼儿园班级工作总结2015
2015/05/25 职场文书
2015年毕业实习工作总结
2015/05/29 职场文书
开工典礼致辞
2015/07/29 职场文书
学校学期工作总结
2015/08/13 职场文书
2016教师廉洁从教心得体会
2016/01/13 职场文书
乡镇干部学习心得体会
2016/01/23 职场文书
如何在pycharm中快捷安装pip命令(如pygame)
2021/05/31 Python