JavaScript 模仿vbs中的 DateAdd() 函数的代码


Posted in Javascript onAugust 13, 2007

项目中需要用到日历,.net的日历控件又太重,只好用js写一个,日历的核心函数是 DateAdd(),编写过程中发现 js 里面操作时间比想象中的繁琐,不像vbscript中的可以轻松地dateadd,后来才想到用 setFullYear()、setDate()等内置函数,可以拼合一个js版的 dateadd() 来,代码如下:

function DateAdd(interval,number,date){ // date 可以是时间对象也可以是字符串,如果是后者,形式必须为: yyyy-mm-dd hh:mm:ss 其中分隔符不定。"2006年12月29日 16点01分23秒" 也是合法的  
number = parseInt(number);  
if (typeof(date)=="string"){  
date = date.split(/\D/);  
--date[1];  
eval("var date = new Date("+date.join(",")+")");  
}  
if (typeof(date)=="object"){  
var date = date  
}  
switch(interval){  
case "y": date.setFullYear(date.getFullYear()+number); break;  
case "m": date.setMonth(date.getMonth()+number); break;  
case "d": date.setDate(date.getDate()+number); break;  
case "w": date.setDate(date.getDate()+7*number); break;  
case "h": date.setHours(date.getHour()+number); break;  
case "n": date.setMinutes(date.getMinutes()+number); break;  
case "s": date.setSeconds(date.getSeconds()+number); break;  
case "l": date.setMilliseconds(date.getMilliseconds()+number); break;  
}   
return date;  
} 

这个函数已经尽量模仿 vbscript 中的 dateadd 函数,三个参数,第一个是变化的时间间隔,可以是年、月、日、周、时、分、秒、毫秒(扩展),第三个参数可以是时间对象,也可以是字符串(形式必须为:2006-12-29 14:32:57 或 2006年12月29日 14点32分57秒),函数的返回值是新的时间对象。

Javascript 相关文章推荐
用javascript实现的图片马赛克后显示并切换加文字功能
Apr 21 Javascript
jQuery中add实现同时选择两个id对象
Oct 22 Javascript
鼠标选择动态改变网页背景颜色的JS代码
Dec 10 Javascript
使用JavaScript链式编程实现模拟Jquery函数
Dec 21 Javascript
jQuery页面刷新(局部、全部)问题分析
Jan 09 Javascript
Vue方法与事件处理器详解
Dec 01 Javascript
Vue常用指令V-model用法
Mar 08 Javascript
angularjs之$timeout指令详解
Jun 13 Javascript
webpack实现热更新(实施同步刷新)
Jul 28 Javascript
Vue响应式原理Observer、Dep、Watcher理解
Jun 06 Javascript
解决vue单页面应用进入页面加载所有 js 的问题
Aug 12 Javascript
详解vue-cli项目在IE浏览器打开报错解决方法
Dec 10 Vue.js
用JavaScript 处理 URL 的两个函数代码
Aug 13 #Javascript
增强的 JavaScript 的 trim 函数的代码
Aug 13 #Javascript
让回调函数 showResponse 也带上参数的代码
Aug 13 #Javascript
分析 JavaScript 中令人困惑的变量赋值
Aug 13 #Javascript
IE/FireFox具备兼容性的拖动代码
Aug 13 #Javascript
JavaScript 编程引入命名空间的方法与代码
Aug 13 #Javascript
权威JavaScript 中的内存泄露模式
Aug 13 #Javascript
You might like
提高PHP编程效率 引入缓存机制提升性能
2010/02/15 PHP
php自动加载机制的深入分析
2013/06/08 PHP
PHP通过插入mysql数据来实现多机互锁实例
2014/11/05 PHP
PHP将身份证正反面两张照片合成一张图片的代码
2017/04/08 PHP
PHP+Mysql分布式事务与解决方案深入理解
2021/02/27 PHP
用JavaScript显示随机图像或引用
2009/04/21 Javascript
在标题栏显示新消息提示,很多公司项目中用到这个方法
2011/11/04 Javascript
用javascript删除当前行,添加行(示例代码)
2013/11/25 Javascript
js获得当前时区夏令时发生和终止的时间代码
2014/02/23 Javascript
jQuery中的编程范式详解
2014/12/15 Javascript
js实现仿网易点击弹出提示同时背景变暗效果
2015/08/13 Javascript
Bootstrap框架下下拉框select搜索功能
2020/03/26 Javascript
Vue.js每天必学之内部响应式原理探究
2016/09/07 Javascript
JS文件上传神器bootstrap fileinput详解
2021/01/28 Javascript
node.js入门教程之querystring模块的使用方法
2017/02/27 Javascript
vue绑定设置属性的多种方式(5)
2017/08/16 Javascript
javascript自定义事件功能与用法实例分析
2017/11/08 Javascript
jQuery实现的简单无刷新评论功能示例
2017/11/08 jQuery
玩转vue的slot内容分发
2018/09/22 Javascript
使用JS监听键盘按下事件(keydown event)
2019/11/07 Javascript
Python yield使用方法示例
2013/12/04 Python
详解python之多进程和进程池(Processing库)
2017/06/09 Python
Python 加密与解密小结
2018/12/06 Python
Python3内置模块pprint让打印比print更美观详解
2019/06/02 Python
VPS CENTOS 上配置python,mysql,nginx,uwsgi,django的方法详解
2019/07/01 Python
Python 多线程其他属性以及继承Thread类详解
2019/08/28 Python
Django3中的自定义用户模型实例详解
2020/08/23 Python
HTML5制作酷炫音频播放器插件图文教程
2014/12/30 HTML / CSS
欧舒丹加拿大官网:L’Occitane加拿大
2017/10/29 全球购物
带香烟到学校抽的检讨书
2014/09/25 职场文书
补充协议书
2015/01/28 职场文书
医生个人年度总结
2015/02/28 职场文书
稽核岗位职责范本
2015/04/13 职场文书
运动会入场词
2015/07/18 职场文书
超市员工管理制度
2015/08/06 职场文书
一小时迅速入门Mybatis之bind与多数据源支持 Java API
2021/09/15 Javascript