Javascript 中的 DateAdd() 时间函数

[ 2007-02-05 04:08:42 | 作者: admin ]
字号: | |
转载1
http://www.happyshow.org/article.asp?id=145
项目中需要用到日历,.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秒),函数的返回值是新的时间对象。

转载2
不知大家有沒有碰過跟我一樣的情形… 讓M$的VB給養成壞習慣了…
在VB裡… 有很多關於日期時間的運算函式…
譬如:DateDiff(), Format(日期表示式), DateAdd()… 等等…
但是在JavaScript中卻沒有這些方便的函式可用…
小弟就乾脆改寫個自用的日期自訂函數來用…
當該網頁需要用到日期函式時, 我都會先宣告…
<script language=”javascript” src=”DateExpFunction.js”> </script>
這樣… 當你在JacaScript中建立一個新的Date物件時, 會自動使用這個新的物件函數… 譬如:
var Today = new Date();
alert(’今天是:’ + Today.toFormat(’yyyy/mm/dd’));
alert(’現在時間是:’ + Today.toFormat(’HH:nn:ss’));
alert(’十天後為:’ + Today.DateAdd(’d', 10));
alert(’五天前為:’ + Today.DateAdd(’d', -5));
alert(’2005/01/01距離今天為:’ + Today.DateDiff(’d', ‘2005/1/1′));
你看… 這樣是不是很方便呢!?
Click Here To Download
[最后修改由 admin, 于 2007-02-05 04:12:21]
评论Feed 评论Feed: http://blog.xg98.com/feed.asp?q=comment&id=798

这篇日志没有评论。

此日志不可发表评论。