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 20 Javascript
使用jQuery在对象中缓存选择器的简单方法
Jun 30 Javascript
JavaScript数据结构与算法之链表
Jan 29 Javascript
JavaScript实现图片滑动切换的代码示例分享
Mar 06 Javascript
原生ajax处理json格式数据的实例代码
Dec 25 Javascript
详解Vue.js中.native修饰符
Apr 24 Javascript
vue中使用better-scroll实现滑动效果及注意事项
Nov 15 Javascript
推荐一个基于Node.js的表单验证库
Feb 15 Javascript
微信小程序传值以及获取值方法的详解
Apr 29 Javascript
layer实现登录弹框,登录成功后关闭弹框并调用父窗口的例子
Sep 11 Javascript
浅析vue-cli3配置webpack-bundle-analyzer插件【推荐】
Oct 23 Javascript
js+canvas绘制图形验证码
Sep 21 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
ftp类(myftp.php)
2006/10/09 PHP
PHP合并数组+与array_merge的区别分析
2010/08/01 PHP
php中magic_quotes_gpc对unserialize的影响分析
2014/12/16 PHP
php使用指定字符列表生成随机字符串的方法
2015/04/18 PHP
php源码的安装方法和实例
2019/09/26 PHP
jQuery控制图片的hover效果(smartRollover.js)
2012/03/18 Javascript
jQuery学习笔记(4)--Jquery中获取table中某列值的具体思路
2013/04/10 Javascript
一个简单的JS时间控件示例代码(JS时分秒时间控件)
2013/11/22 Javascript
JavaScript高级教程5.6之基本包装类型(详细)
2015/11/23 Javascript
解析Node.js异常处理中domain模块的使用方法
2016/02/16 Javascript
Javascript技术栈中的四种依赖注入小结
2016/02/27 Javascript
深入理解JQuery中的事件与动画
2016/05/18 Javascript
再谈javascript常见错误及解决方法
2016/09/16 Javascript
Javascript将字符串日期格式化为yyyy-mm-dd的方法
2016/10/27 Javascript
详解windows下vue-cli及webpack 构建网站(二)导入bootstrap样式
2017/06/17 Javascript
详解Angular6.0使用路由步骤(共7步)
2018/06/29 Javascript
vue项目中,main.js,App.vue,index.html的调用方法
2018/09/20 Javascript
js简单遍历获取对象中的属性值的方法示例
2019/06/19 Javascript
Vue发布项目实例讲解
2019/07/17 Javascript
JS几个常用的函数和对象定义与用法示例
2020/01/15 Javascript
vue实现户籍管理系统
2020/05/29 Javascript
JS实现canvas简单小画板功能
2020/06/23 Javascript
python线程池的实现实例
2013/11/18 Python
在Python的Django框架中更新数据库数据的方法
2015/07/17 Python
django rest framework之请求与响应(详解)
2017/11/06 Python
python 读取DICOM头文件的实例
2018/05/07 Python
Python数据分析模块pandas用法详解
2019/09/04 Python
收集的22款给力的HTML5和CSS3帮助工具
2012/09/14 HTML / CSS
韩国爱茉莉太平洋化妆品美国站:Amore Pacific US
2016/10/28 全球购物
6号汽车旅馆预订:Motel 6
2018/02/11 全球购物
SQL中where和having的区别
2012/06/17 面试题
暑假社会实践心得体会
2014/09/02 职场文书
大学生撤销处分思想汇报
2014/09/12 职场文书
公安局班子个人对照检查材料思想汇报
2014/10/09 职场文书
小兵张嘎观后感
2015/06/03 职场文书
原来闭幕词是这样写的呀!
2019/07/01 职场文书