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 相关文章推荐
将HTML自动转为JS代码
Jun 26 Javascript
用于自动添加Digg This!按钮的JavaScript
Dec 23 Javascript
Jquery升级新版本后选择器的语法问题
Jun 02 Javascript
事件冒泡是什么如何用jquery阻止事件冒泡
Mar 20 Javascript
jQuery插件windowScroll实现单屏滚动特效
Jul 14 Javascript
微信小程序 form组件详解
Oct 25 Javascript
canvas绘图不清晰的解决方案
Feb 28 Javascript
详解如何优雅地在React项目中使用Redux
Dec 28 Javascript
使用vue官方提供的模板vue-cli搭建一个helloWorld案例分析
Jan 16 Javascript
详解关于JSON.parse()和JSON.stringify()的性能小测试
Mar 14 Javascript
解决layui的form里的元素进行动态生成,验证失效的问题
Sep 14 Javascript
如何在postman中添加cookie信息步骤解析
Jun 30 Javascript
用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
新浪新闻小偷
2006/10/09 PHP
PHP-Fcgi下PHP的执行时间设置方法
2013/08/02 PHP
php实现复制移动文件的方法
2015/07/29 PHP
php实现统计目录文件大小的函数
2015/12/25 PHP
PHP+MYSQL实现读写分离简单实战
2017/03/13 PHP
thinkphp3.2同时连接两个数据库的简单方法
2019/08/13 PHP
PHP日期和时间函数的使用示例详解
2020/08/06 PHP
Javascript实例教程(19) 使用HoTMetal(1)
2006/12/23 Javascript
node.js中的fs.writeFile方法使用说明
2014/12/14 Javascript
js实现向右横向滑出的二级菜单效果
2015/08/27 Javascript
JS模仿手机端九宫格登录功能实现代码
2016/04/28 Javascript
浅析Javascript中bind()方法的使用与实现
2016/04/29 Javascript
JS获取鼠标坐标并且根据鼠标位置不同弹出不同内容
2017/06/12 Javascript
vue中实现滚动加载更多的示例
2017/11/08 Javascript
浅析JS中什么是自定义react数据验证组件
2018/10/19 Javascript
利用Vue实现一个markdown编辑器实例代码
2019/05/19 Javascript
Vue组件实现触底判断
2019/06/26 Javascript
vue悬浮可拖拽悬浮按钮的实例代码
2019/08/20 Javascript
Node中对非阻塞I/O、事件循环的知识点总结
2020/01/05 Javascript
[10:04]国际邀请赛采访专栏:DK.Farseer,mouz.Black^,采访员Josh专访
2013/08/05 DOTA
[00:16]热血竞技场
2019/03/06 DOTA
零基础写python爬虫之打包生成exe文件
2014/11/06 Python
python实现扫描日志关键字的示例
2018/04/28 Python
对Python实现累加函数的方法详解
2019/01/23 Python
为什么你还不懂得怎么使用Python协程
2019/05/13 Python
python3 线性回归验证方法
2019/07/09 Python
Python 过滤错误log并导出的实例
2019/12/26 Python
Python imutils 填充图片周边为黑色的实现
2020/01/19 Python
财务会计人员求职的自我评价
2014/01/13 职场文书
学校就业推荐信范文
2014/05/19 职场文书
结对共建工作方案
2014/06/02 职场文书
结婚老公保证书
2015/02/26 职场文书
2015年度团总支工作总结
2015/04/23 职场文书
《我的伯父鲁迅先生》教学反思
2016/02/16 职场文书
PyMongo 查询数据的实现
2021/06/28 Python
关于redisson缓存序列化几枚大坑说明
2021/08/04 Redis