正在加载菜单,请稍待......

[转]JavaScript日期处理函数集合

类别:javascript

标签:

浏览:60次

明河共影发布于 2009年09月27日

RIA之家技术群:24440797。你可以通过以下方式联络到明河: 1、进入我的微博首页跟随我 2、我的email:riahome@126.com

这里贴出javascript中最常用的日期处理函数:

1、检查日期是否合法

  1. // 当输入参数为isDate(dd,mm,ccyy)时,表示要检查年,月,日
  2. // 当输入参数为isDate(dd,mm) 表示默认年为当前年
  3. // 当输入参数为isDate(dd)    表示默认年,月为当前年月
  4. // 注意输入月份保证在1-12以内。
  5. function isDate (day,month,year) {
  6.     var today = new Date();
  7.     year = ((!year) ? y2k(today.getYear())year);
  8.     month = ((!month) ? today.getMonth():month-1);
  9.     if (!day) return false
  10.     var test = new Date(year,month,day);
  11.     if ( (y2k(test.getYear()) == year) &&
  12.          (month == test.getMonth()) &&
  13.          (day == test.getDate()) )
  14.         return true;
  15.     else
  16.         return false
  17. }

如何将一个字符串中的时间和当前时间做比较

  1. /*其中的日期字符串可有以下格式:
  2.     格式 1 : 19970529
  3.     格式 2 : 970529
  4.     格式 3 : 29/05/1997
  5.     格式 4 : 29/05/97
  6.     输入参数dateType是1到4的数字,表示使用哪种格式.
  7. */
  8. <!-
  9. function isitToday(dateString,dateType) {
  10.      var now = new Date();
  11.      var today = new Date(now.getYear(),now.getMonth(),now.getDate())
  12.  
  13.      if (dateType == 1)
  14.          var date = new Date(dateString.substring(0,4),
  15.                              dateString.substring(4,6)-1,
  16.                              dateString.substring(6,8));
  17.      else if (dateType == 2)
  18.          var date = new Date(dateString.substring(0,2),
  19.                              dateString.substring(2,4)-1,
  20.                              dateString.substring(4,6));
  21.      else if (dateType == 3)
  22.          var date = new Date(dateString.substring(6,10),
  23.                              dateString.substring(3,5)-1,
  24.                              dateString.substring(0,2));
  25.      else if (dateType == 4)
  26.          var date = new Date(dateString.substring(6,8),
  27.                              dateString.substring(3,5)-1,
  28.                              dateString.substring(0,2));
  29.      else
  30.          return false;
  31.  
  32.      if (date.toString() == today.toString())
  33.          return true;
  34.      else
  35.          return false;
  36. }
  37. //调用的例子如下:
  38. if (isitToday("19970529",1)) alert('true'); else alert('false');
  39. if (isitToday("970529",2)) alert('true'); else alert('false');
  40. if (isitToday("29/05/1997",3)) alert('true'); else alert('false');
  41. if (isitToday("02/06/97",4)) alert('true'); else alert('false');

3、根据一个人的生日计算他的岁数

  1. /*其中的日期字符串可有以下格式:
  2.     格式 1 : 19970529
  3.     格式 2 : 970529
  4.     格式 3 : 29/05/1997
  5.     格式 4 : 29/05/97
  6.     输入参数dateType是1到4的数字,表示使用哪种格式.
  7. */
  8. function getAge(dateString,dateType) {
  9.      var now = new Date();
  10.      var today = new Date(now.getYear(),now.getMonth(),now.getDate())
  11.      var yearNow = now.getYear();
  12.      var monthNow = now.getMonth();
  13.      var dateNow = now.getDate();
  14.  
  15.      if (dateType == 1)
  16.          var dob = new Date(dateString.substring(0,4),
  17.                              dateString.substring(4,6)-1,
  18.                              dateString.substring(6,8));
  19.      else if (dateType == 2)
  20.          var dob = new Date(dateString.substring(0,2),
  21.                              dateString.substring(2,4)-1,
  22.                              dateString.substring(4,6));
  23.      else if (dateType == 3)
  24.          var dob = new Date(dateString.substring(6,10),
  25.                              dateString.substring(3,5)-1,
  26.                              dateString.substring(0,2));
  27.      else if (dateType == 4)
  28.          var dob = new Date(dateString.substring(6,8),
  29.                              dateString.substring(3,5)-1,
  30.                              dateString.substring(0,2));
  31.      else
  32.          return ';
  33.  
  34.      var yearDob = dob.getYear();
  35.      var monthDob = dob.getMonth();
  36.      var dateDob = dob.getDate();
  37.  
  38.      yearAge = yearNow - yearDob;
  39.  
  40.      if (monthNow > monthDob)
  41.          var monthAge = monthNow - monthDob;
  42.      else {
  43.          yearAge--;
  44.          var monthAge = 12 + monthNow -monthDob;
  45.      }
  46.      if (dateNow > dateDob)
  47.          var dateAge = dateNow - dateDob;
  48.      else {
  49.          monthAge--;
  50.          var dateAge = 31 + dateNow - dateDob;
  51.      }
  52.  
  53.      return yearAge + ' years ' + monthAge + ' months ' + dateAge + ' days';
  54. }
  55. //调用例子
  56. document.write(getAge("19650104",1)+'BR>')
  57. document.write(getAge("650104",2)+'BR>')
  58. document.write(getAge("04/01/1965",3)+'BR>')
  59. document.write(getAge("04/01/65",4)+'BR>')

4、如何使用下面的格式dd/mm/yy在网页中显示日期

  1. var date = new Date();
  2. var d   = date.getDate();
  3. var day = (d < 10) ? '0' + d : d;
  4. var m = date.getMonth() + 1;
  5. var month = (m < 10) ? '0' + m : m;
  6. var yy = date.getYear();
  7. var year = (yy < 1000) ? yy + 1900 : yy;
  8.  
  9. document.write(day + "/" + month + "/" + year);

5、如何让我的网页的最近更新日期更易读

  1. function makeArray0() {
  2.       for (i = 0; i<makeArray0.arguments.length; i++)
  3.            this[i] = makeArray0.arguments[i];
  4. }
  5. var days = new makeArray0("Sunday","Monday","Tuesday","Wednesday",
  6.      "Thursday","Friday","Saturday");
  7. var months = new makeArray0('January','February','March',
  8.      'April','May','June','July','August','September',
  9.      'October','November','December');
  10. function nths(day) {
  11.       if (day == 1 || day == 21 || day == 31)
  12.            return 'st';
  13.       else
  14.            if (day == 2 || day == 22)
  15.                 return 'nd';
  16.                 if (day == 3 || day == 23)
  17.                      return 'rd';
  18.                 else return 'th';
  19. }
  20. function y2k(number) { return (number < 1000) ? number + 1900 : number; }
  21. var last = document.lastModified;
  22. var date = new Date(last);
  23. document.write("Last updated on " + days[date.getDay()] + ' ' +
  24.      date.getDate() + nths(date.getDate()) + " " +
  25.      months[date.getMonth()] + ", " +
  26.      (y2k(date.getYear()) + "."

6、如何显示到某个特定日期的倒记时

  1. function y2k(number) { return (number < 1000) ? number + 1900 : number; }
  2.  
  3. function timeTillDate(whenDay,whenMonth,whenYear) {
  4.      var now = new Date();
  5.      var thisDay = now.getDate(), thisMonth = now.getMonth() + 1, thisYear = y2k(now.getYear())
  6.      var yearsDifference = whenYear - thisYear, monthsDifference = 0, daysDifference = 0, string = ';
  7.  
  8.      if (whenMonth >= thisMonth) monthsDifference = whenMonth - thisMonth;
  9.      else { yearsDifference--; monthsDifference = whenMonth + 12 - thisMonth; }
  10.  
  11.      if (whenDay >= thisDay)daysDifference = whenDay - thisDay;
  12.      else {
  13.          if (monthsDifference > 0) monthsDifference--;
  14.          else { yearsDifference--; monthsDifference+=11; }
  15.          daysDifference = whenDay + 31 - thisDay;
  16.      }
  17.  
  18.      if (yearsDifference < 0) return ';
  19.  
  20.      if ((yearsDifference == 0) && (monthsDifference == 0) && (daysDifference == 0))
  21.          return ';
  22.  
  23.      if (yearsDifference > 0) {
  24.          string = yearsDifference + ' year';
  25.          if (yearsDifference > 1) string += 's';
  26.          string += ' ';
  27.      }
  28.  
  29.      if (monthsDifference > 0) {
  30.          string += monthsDifference + ' month';
  31.          if (monthsDifference > 1) string += 's';
  32.          string += ' ';
  33.      }
  34.      if (daysDifference > 0) {
  35.          string += daysDifference + ' day';
  36.          if (daysDifference > 1) string += 's';
  37.          string += ' ';
  38.      }
  39.  
  40.      var difference = Date.UTC(now.getYear(),now.getMonth(),now.getDate(),now.getHours(),now.getMinutes(),now.getSeconds()) -
  41.                       Date.UTC(now.getYear(),now.getMonth(),now.getDate(),0,0,0);
  42.  
  43.      difference = 1000*60*60*24 - difference;
  44.  
  45.      var hoursDifference = Math.floor(difference/1000/60/60);
  46.      difference = difference - hoursDifference*1000*60*60
  47.      var minutesDifference = Math.floor(difference/1000/60);
  48.      difference = difference - minutesDifference*1000*60
  49.      var secondsDifference = Math.floor(difference/1000);
  50.  
  51.      if (hoursDifference > 0) {
  52.          string += hoursDifference + ' hour';
  53.          if (hoursDifference > 1) string +='s';
  54.          string += ' ';
  55.      }
  56.  
  57.      if (minutesDifference > 0) {
  58.          string += minutesDifference + ' minute';
  59.          if (minutesDifference > 1) string +='s';
  60.          string += ' ';
  61.      }
  62.  
  63.      if (secondsDifference > 0) {
  64.          string += secondsDifference + ' second';
  65.          if (secondsDifference > 1) string +='s';
  66.          string += ' ';
  67.      }
  68.      return string;
  69. }
  70.  
  71. 调用例子,例如现在到31/12/1999还有多久。
  72. document.write(timeTillDate(31,12,1999));

7、如何在一个日期中增加几个月后并能够正确显示出来

  1. function makeArray() {
  2.      for (i = 0; i<makeArray.arguments.length; i++)
  3.          this[i + 1] = makeArray.arguments[i];
  4. }
  5. var months = new makeArray('January','February','March','April',
  6.                             'May','June','July','August','September',
  7.                             'October','November','December');
  8. function nths(day) {
  9.      if (day == 1 || day == 21 || day == 31) return 'st';
  10.      else if (day == 2 || day == 22) return 'nd';
  11.      else if (day == 3 || day == 23) return 'rd';
  12.      else return 'th';
  13. }
  14. function y2k(number) { return (number < 1000) ? number + 1900 : number; }
  15. function monthsahead(noofmonths) {
  16.      var today = new Date();
  17.      var date = new Date(today.getYear(),today.getMonth() + noofmonths,today.getDate(),today.getHours(),today.getMinutes(),today.getSeconds())
  18.      return date.getDate() + nths(date.getDate()) + ' ' + months[date.getMonth() + 1] + ' ' + y2k(date.getYear())
  19. }
  20.  
  21. 调用例子:
  22. document.write(monthsahead(6));

订阅RIA之家,及时获取RIA之家最新文章:

本文链接:http://www.36ria.com/497

除非特别说明,本站的所有内容均为原创或翻译,所有权属于文章作者,欢迎转载,转载请注明出处,谢谢。