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中的几个运算符
Jun 29 Javascript
JS连接SQL数据库与ACCESS数据库的方法实例
Nov 21 Javascript
Javascript实现颜色rgb与16进制转换的方法
Apr 18 Javascript
高性能JavaScript循环语句和条件语句
Jan 20 Javascript
jquery插件Jplayer使用方法简析
Apr 22 Javascript
layer实现弹窗提交信息
Dec 12 Javascript
Bootstrap php制作动态分页标签
Dec 23 Javascript
JS仿QQ好友列表展开、收缩功能(第一篇)
Jul 07 Javascript
从零开始搭建webpack+react开发环境的详细步骤
May 18 Javascript
浅谈微信页面入口文件被缓存解决方案
Sep 29 Javascript
原生JS无缝滑动轮播图
Oct 22 Javascript
vue封装数字翻牌器
Apr 20 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笔试题
2009/08/04 PHP
PHP排序之二维数组的按照字母排序实现代码
2011/08/13 PHP
php实现根据字符串生成对应数组的方法
2014/09/22 PHP
PHP PDOStatement::columnCount讲解
2019/01/30 PHP
用jquery来定位
2007/02/20 Javascript
javascript 限制输入脚本大全
2009/11/03 Javascript
JavaScript中圆括号()和方括号[]的特殊用法疑问解答
2013/08/06 Javascript
js实现单击图片放大图片的方法
2015/02/17 Javascript
JQuery替换DOM节点的方法
2015/06/11 Javascript
JS+CSS实现的经典圆角下拉菜单效果代码
2015/10/21 Javascript
jQuery基于toggle实现click触发DIV的显示与隐藏问题分析
2016/06/12 Javascript
fullCalendar中文API官方文档
2017/02/07 Javascript
JS区分Object与Aarry的六种方法总结
2017/02/27 Javascript
详解Vue2.0之去掉组件click事件的native修饰
2017/04/20 Javascript
浅谈angularJS的$watch失效问题的解决方案
2017/08/11 Javascript
vue2.0 和 animate.css的结合使用
2017/12/12 Javascript
vue中的模态对话框组件实现过程
2018/05/01 Javascript
vue slots 组件的组合/分发实例
2018/09/06 Javascript
webpack3升级到webpack4遇到问题总结
2019/09/30 Javascript
javascript实现多边形碰撞检测
2020/10/24 Javascript
[38:21]2014 DOTA2国际邀请赛中国区预选赛5.21 TongFu VS LGD-CDEC
2014/05/22 DOTA
浅谈python for循环的巧妙运用(迭代、列表生成式)
2017/09/26 Python
Python numpy线性代数用法实例解析
2019/11/15 Python
GoDaddy英国:全球排名第一的域名注册商
2018/06/08 全球购物
实习销售业务员自我鉴定
2013/09/21 职场文书
建材业务员岗位职责
2013/12/08 职场文书
安全月活动总结
2014/05/05 职场文书
普通党员自我剖析材料
2014/10/07 职场文书
2014年残联工作总结
2014/11/21 职场文书
运动会闭幕式致辞
2015/07/29 职场文书
高中团支书竞选稿
2015/11/21 职场文书
餐厅如何利用“营销策略”扭转亏本局面
2019/10/15 职场文书
扩展多台相同的Web服务器
2021/04/01 Servers
Python基础之教你怎么在M1系统上使用pandas
2021/05/08 Python
Spring中bean集合注入的方法详解
2022/07/07 Java/Android
zabbix 代理服务器的部署与 zabbix-snmp 监控问题
2022/07/15 Servers