几个js处理时间函数(1)
最近想要慢慢建立自己的代码库,整理了几个之前用到的js处理时间的函数,发出来跟大家分享一下,以后的使用中会不断增加和修改代码库。
一、把字符串转换为日期对象
有时需要把字符串转换为日期对象,但是IE下不支持new Date(“2011-04-07”)这样实例化日期对象,ff下支持,所以写了一个扩展函数,用来把形如yyyy-mm-dd或者dd/mm/yyyy的字符串转换为日期对象。代码如下:
- /*
- 函数:把字符串转换为日期对象
- 参数:yyyy-mm-dd或dd/mm/yyyy形式的字符串
- 返回:Date对象
- 注:IE下不支持直接实例化日期对象,如new Date("2011-04-06")
- */
- Date.prototype.convertDate = function (date) {
- var flag = true;
- var dateArray = date.split("-");
- if (dateArray.length != 3) {
- dateArray = date.split("/");
- if (dateArray.length != 3) {
- return null;
- }
- flag = false;
- }
- var newDate = new Date();
- if (flag) {
- // month从0开始
- newDate.setFullYear(dateArray[0], dateArray[1] - 1, dateArray[2]);
- }
- else {
- newDate.setFullYear(dateArray[2], dateArray[1] - 1, dateArray[0]);
- }
- newDate.setHours(0, 0, 0);
- return newDate;
- };
测试:
- <script type="text/javascript">
- document.writeln(new Date().convertDate("7/12/2011"));
- </script>
输出:
Wed Dec 07 2011 17:30:58 GMT+0800
二、计算两个日期之间的差值
这个函数可以计算两个日期之前的差值(毫秒/秒/分/小时/天),主要用到了getTime()函数和Math.floor()函数,代码如下:
- /*
- 函数:计算两个日期之间的差值
- 参数:date是日期对象
- flag:ms-毫秒,s-秒,m-分,h-小时,d-天,M-月,y-年
- 返回:当前日期和date两个日期相差的毫秒/秒/分/小时/天
- */
- Date.prototype.dateDiff = function (date, flag) {
- var msCount;
- var diff = this.getTime() - date.getTime();
- switch (flag) {
- case "ms":
- msCount = 1;
- break;
- case "s":
- msCount = 1000;
- break;
- case "m":
- msCount = 60 * 1000;
- break;
- case "h":
- msCount = 60 * 60 * 1000;
- break;
- case "d":
- msCount = 24 * 60 * 60 * 1000;
- break;
- }
- return Math.floor(diff / msCount);
- };
测试:
- <script type="text/javascript">
- var d1 = new Date().convertDate("2011-04-08");
- var d2 = new Date().convertDate("2011-04-07");
- document.writeln(d1.dateDiff(d2, 'd'));
- </script>
结果:
1
三、判断一个年份是否为闰年
代码:
- /*
- 函数:判断一个年份是否为闰年
- 返回:是否为闰年
- */
- Date.prototype.isLeapYear = function () {
- var year = this.getFullYear();
- return (year % 4 == 0) && (year % 100 != 0 || year % 400 == 0);
- }
测试:
- <script type="text/javascript">
- document.writeln(new Date().convertDate("2000-04-08").isLeapYear() + "<br />");
- document.writeln(new Date().convertDate("2011-04-08").isLeapYear() + "<br />");
- </script>
结果:
true
false






