扩展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代码
Dec 26 Javascript
jQuery学习3:操作元素属性和特性
Feb 07 Javascript
学习JavaScript设计模式之迭代器模式
Jan 19 Javascript
vue.js初学入门教程(1)
Nov 03 Javascript
javascript实现非常简单的小数取整功能示例
Jun 13 Javascript
用vue构建多页面应用的示例代码
Sep 20 Javascript
layer.open关闭父窗口 以及调用父页面的方法
Aug 17 Javascript
vue 实现搜索的结果页面支持全选与取消全选功能
May 10 Javascript
Vue.js@2.6.10更新内置错误处机制Fundebug同步支持相应错误监控
May 13 Javascript
微信小程序的授权实现过程解析
Aug 02 Javascript
vue elementui 实现搜索栏公共组件封装的实例代码
Jan 20 Javascript
es6函数之尾递归用法实例分析
Apr 25 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
让你的网站首页自动选择语言转跳
2006/12/06 PHP
不错的PHP学习之php4与php5之间会穿梭一点点感悟
2007/05/03 PHP
Fatal error: session_start(): Failed to initialize storage module: files问题解决方法
2014/05/04 PHP
PHP Curl出现403错误的解决办法
2014/05/29 PHP
php实现的短网址算法分享
2014/06/20 PHP
C#静态方法与非静态方法实例分析
2014/09/22 PHP
PHP函数引用返回的实例详解
2016/09/11 PHP
PHP实现的折半查找算法示例
2017/12/19 PHP
Yii框架的布局文件实例分析
2019/09/04 PHP
laravel高级的Join语法详解以及使用Join多个条件
2019/10/16 PHP
jquery animate 动画效果使用说明
2009/11/04 Javascript
jQuery 常见开发使用技巧总结
2009/12/26 Javascript
javascript椭圆旋转相册实现代码
2012/01/16 Javascript
Jquery多选框互相内容交换的实例代码
2013/07/04 Javascript
JavaScript中this关键词的使用技巧、工作原理以及注意事项
2014/05/20 Javascript
理解javascript闭包
2015/12/15 Javascript
JS点击某个图标或按钮弹出文件选择框的实现代码
2016/09/27 Javascript
Javascript仿京东放大镜的效果
2017/03/01 Javascript
Vue2.0 实现移动端图片上传功能
2018/05/30 Javascript
详解JQuery基础动画操作
2019/04/12 jQuery
[02:09]DOTA2辉夜杯 EHOME夺冠举杯现场
2015/12/28 DOTA
在Django的URLconf中进行函数导入的方法
2015/07/18 Python
python多线程抽象编程模型详解
2019/03/20 Python
详解pandas DataFrame的查询方法(loc,iloc,at,iat,ix的用法和区别)
2019/08/02 Python
Python openpyxl读取单元格字体颜色过程解析
2019/09/03 Python
解决Tensorboard 不显示计算图graph的问题
2020/02/15 Python
Python接口测试get请求过程详解
2020/02/28 Python
给排水工程师岗位职责
2013/11/21 职场文书
难忘的一课教学反思
2014/04/30 职场文书
暑期培训班招生方案
2014/08/26 职场文书
社区六一儿童节活动总结
2015/02/11 职场文书
学生逃课万能检讨书2000字
2015/02/17 职场文书
二胎满月酒致辞
2015/07/29 职场文书
2016高一新生军训心得体会
2016/01/11 职场文书
写给消防战士们的一封慰问信
2019/10/07 职场文书
详细聊聊关于Mysql联合查询的那些事儿
2021/10/24 MySQL