龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > Javascript编程 >

几个js处理时间函数(1)

时间:2013-03-06 14:58来源:未知 作者:admin 点击:
分享到:
最近想要慢慢建立自己的代码库,整理了几个之前用到的 js 处理时间的函数,发出来跟大家分享一下,以后的使用中会不断增加和修改代码库。 一、把字符串转换为日期对象 有时需要

最近想要慢慢建立自己的代码库,整理了几个之前用到的js处理时间的函数,发出来跟大家分享一下,以后的使用中会不断增加和修改代码库。

一、把字符串转换为日期对象

有时需要把字符串转换为日期对象,但是IE下不支持new Date(“2011-04-07”)这样实例化日期对象,ff下支持,所以写了一个扩展函数,用来把形如yyyy-mm-dd或者dd/mm/yyyy的字符串转换为日期对象。代码如下:

  1. /*   
  2. 函数:把字符串转换为日期对象   
  3. 参数:yyyy-mm-dd或dd/mm/yyyy形式的字符串   
  4. 返回:Date对象   
  5. 注:IE下不支持直接实例化日期对象,如new Date("2011-04-06")   
  6. */   
  7. Date.prototype.convertDate = function (date) {   
  8. var flag = true;   
  9. var dateArray = date.split("-");  
  10. if (dateArray.length != 3) {  
  11. dateArray = date.split("/");  
  12. if (dateArray.length != 3) {  
  13. return null;  
  14. }  
  15. flag = false;  
  16. }  
  17. var newDate = new Date();  
  18. if (flag) {  
  19. // month从0开始  
  20. newDate.setFullYear(dateArray[0], dateArray[1] - 1, dateArray[2]);  
  21. }  
  22. else {  
  23. newDate.setFullYear(dateArray[2], dateArray[1] - 1, dateArray[0]);  
  24. }  
  25. newDate.setHours(0, 0, 0);  
  26. return newDate;  
  27. };  

测试:

  1. <script type="text/javascript">  
  2. document.writeln(new Date().convertDate("7/12/2011"));  
  3. </script> 

输出:

Wed Dec 07 2011 17:30:58 GMT+0800

二、计算两个日期之间的差值

这个函数可以计算两个日期之前的差值(毫秒/秒/分/小时/天),主要用到了getTime()函数和Math.floor()函数,代码如下:

  1. /*   
  2. 函数:计算两个日期之间的差值   
  3. 参数:date是日期对象   
  4. flag:ms-毫秒,s-秒,m-分,h-小时,d-天,M-月,y-年   
  5. 返回:当前日期和date两个日期相差的毫秒/秒/分/小时/天   
  6. */   
  7. Date.prototype.dateDiff = function (date, flag) {   
  8. var msCount;   
  9. var diff = this.getTime() - date.getTime();  
  10. switch (flag) {  
  11. case "ms":  
  12. msCount = 1;  
  13. break;  
  14. case "s":  
  15. msCount = 1000;  
  16. break;  
  17. case "m":  
  18. msCount = 60 * 1000;  
  19. break;  
  20. case "h":  
  21. msCount = 60 * 60 * 1000;  
  22. break;  
  23. case "d":  
  24. msCount = 24 * 60 * 60 * 1000;  
  25. break;  
  26. }  
  27. return Math.floor(diff / msCount);  
  28. }; 

测试:

  1. <script type="text/javascript">  
  2. var d1 = new Date().convertDate("2011-04-08");  
  3. var d2 = new Date().convertDate("2011-04-07");  
  4. document.writeln(d1.dateDiff(d2, 'd'));  
  5. </script> 

结果:

1

三、判断一个年份是否为闰年

代码:

  1.  /*  
  2. 函数:判断一个年份是否为闰年  
  3. 返回:是否为闰年  
  4. */ 
  5. Date.prototype.isLeapYear = function () {  
  6. var year = this.getFullYear();  
  7. return (year % 4 == 0) && (year % 100 != 0 || year % 400 == 0);  

测试:

  1. <script type="text/javascript">  
  2. document.writeln(new Date().convertDate("2000-04-08").isLeapYear() + "<br />");  
  3. document.writeln(new Date().convertDate("2011-04-08").isLeapYear() + "<br />");  
  4. </script> 

结果:

true

false

精彩图集

赞助商链接