[转]JavaScript日期处理函数集合
这里贴出javascript中最常用的日期处理函数:
1、检查日期是否合法
- // 当输入参数为isDate(dd,mm,ccyy)时,表示要检查年,月,日
- // 当输入参数为isDate(dd,mm) 表示默认年为当前年
- // 当输入参数为isDate(dd) 表示默认年,月为当前年月
- // 注意输入月份保证在1-12以内。
- function isDate (day,month,year) {
- var today = new Date();
- year = ((!year) ? y2k(today.getYear())year);
- month = ((!month) ? today.getMonth():month-1);
- if (!day) return false
- var test = new Date(year,month,day);
- if ( (y2k(test.getYear()) == year) &&
- (month == test.getMonth()) &&
- (day == test.getDate()) )
- return true;
- else
- return false
- }
如何将一个字符串中的时间和当前时间做比较
- /*其中的日期字符串可有以下格式:
- 格式 1 : 19970529
- 格式 2 : 970529
- 格式 3 : 29/05/1997
- 格式 4 : 29/05/97
- 输入参数dateType是1到4的数字,表示使用哪种格式.
- */
- <!-
- function isitToday(dateString,dateType) {
- var now = new Date();
- var today = new Date(now.getYear(),now.getMonth(),now.getDate())
- if (dateType == 1)
- var date = new Date(dateString.substring(0,4),
- dateString.substring(4,6)-1,
- dateString.substring(6,8));
- else if (dateType == 2)
- var date = new Date(dateString.substring(0,2),
- dateString.substring(2,4)-1,
- dateString.substring(4,6));
- else if (dateType == 3)
- var date = new Date(dateString.substring(6,10),
- dateString.substring(3,5)-1,
- dateString.substring(0,2));
- else if (dateType == 4)
- var date = new Date(dateString.substring(6,8),
- dateString.substring(3,5)-1,
- dateString.substring(0,2));
- else
- return false;
- if (date.toString() == today.toString())
- return true;
- else
- return false;
- }
- //调用的例子如下:
- if (isitToday("19970529",1)) alert('true'); else alert('false');
- if (isitToday("970529",2)) alert('true'); else alert('false');
- if (isitToday("29/05/1997",3)) alert('true'); else alert('false');
- if (isitToday("02/06/97",4)) alert('true'); else alert('false');
3、根据一个人的生日计算他的岁数
- /*其中的日期字符串可有以下格式:
- 格式 1 : 19970529
- 格式 2 : 970529
- 格式 3 : 29/05/1997
- 格式 4 : 29/05/97
- 输入参数dateType是1到4的数字,表示使用哪种格式.
- */
- function getAge(dateString,dateType) {
- var now = new Date();
- var today = new Date(now.getYear(),now.getMonth(),now.getDate())
- var yearNow = now.getYear();
- var monthNow = now.getMonth();
- var dateNow = now.getDate();
- if (dateType == 1)
- var dob = new Date(dateString.substring(0,4),
- dateString.substring(4,6)-1,
- dateString.substring(6,8));
- else if (dateType == 2)
- var dob = new Date(dateString.substring(0,2),
- dateString.substring(2,4)-1,
- dateString.substring(4,6));
- else if (dateType == 3)
- var dob = new Date(dateString.substring(6,10),
- dateString.substring(3,5)-1,
- dateString.substring(0,2));
- else if (dateType == 4)
- var dob = new Date(dateString.substring(6,8),
- dateString.substring(3,5)-1,
- dateString.substring(0,2));
- else
- return ';
- var yearDob = dob.getYear();
- var monthDob = dob.getMonth();
- var dateDob = dob.getDate();
- yearAge = yearNow - yearDob;
- if (monthNow > monthDob)
- var monthAge = monthNow - monthDob;
- else {
- yearAge--;
- var monthAge = 12 + monthNow -monthDob;
- }
- if (dateNow > dateDob)
- var dateAge = dateNow - dateDob;
- else {
- monthAge--;
- var dateAge = 31 + dateNow - dateDob;
- }
- return yearAge + ' years ' + monthAge + ' months ' + dateAge + ' days';
- }
- //调用例子
- document.write(getAge("19650104",1)+'BR>')
- document.write(getAge("650104",2)+'BR>')
- document.write(getAge("04/01/1965",3)+'BR>')
- document.write(getAge("04/01/65",4)+'BR>')
4、如何使用下面的格式dd/mm/yy在网页中显示日期
- var date = new Date();
- var d = date.getDate();
- var day = (d < 10) ? '0' + d : d;
- var m = date.getMonth() + 1;
- var month = (m < 10) ? '0' + m : m;
- var yy = date.getYear();
- var year = (yy < 1000) ? yy + 1900 : yy;
- document.write(day + "/" + month + "/" + year);
5、如何让我的网页的最近更新日期更易读
- function makeArray0() {
- for (i = 0; i<makeArray0.arguments.length; i++)
- this[i] = makeArray0.arguments[i];
- }
- var days = new makeArray0("Sunday","Monday","Tuesday","Wednesday",
- "Thursday","Friday","Saturday");
- var months = new makeArray0('January','February','March',
- 'April','May','June','July','August','September',
- 'October','November','December');
- function nths(day) {
- if (day == 1 || day == 21 || day == 31)
- return 'st';
- else
- if (day == 2 || day == 22)
- return 'nd';
- if (day == 3 || day == 23)
- return 'rd';
- else return 'th';
- }
- function y2k(number) { return (number < 1000) ? number + 1900 : number; }
- var last = document.lastModified;
- var date = new Date(last);
- document.write("Last updated on " + days[date.getDay()] + ' ' +
- date.getDate() + nths(date.getDate()) + " " +
- months[date.getMonth()] + ", " +
- (y2k(date.getYear()) + "."
6、如何显示到某个特定日期的倒记时
- function y2k(number) { return (number < 1000) ? number + 1900 : number; }
- function timeTillDate(whenDay,whenMonth,whenYear) {
- var now = new Date();
- var thisDay = now.getDate(), thisMonth = now.getMonth() + 1, thisYear = y2k(now.getYear())
- var yearsDifference = whenYear - thisYear, monthsDifference = 0, daysDifference = 0, string = ';
- if (whenMonth >= thisMonth) monthsDifference = whenMonth - thisMonth;
- else { yearsDifference--; monthsDifference = whenMonth + 12 - thisMonth; }
- if (whenDay >= thisDay)daysDifference = whenDay - thisDay;
- else {
- if (monthsDifference > 0) monthsDifference--;
- else { yearsDifference--; monthsDifference+=11; }
- daysDifference = whenDay + 31 - thisDay;
- }
- if (yearsDifference < 0) return ';
- if ((yearsDifference == 0) && (monthsDifference == 0) && (daysDifference == 0))
- return ';
- if (yearsDifference > 0) {
- string = yearsDifference + ' year';
- if (yearsDifference > 1) string += 's';
- string += ' ';
- }
- if (monthsDifference > 0) {
- string += monthsDifference + ' month';
- if (monthsDifference > 1) string += 's';
- string += ' ';
- }
- if (daysDifference > 0) {
- string += daysDifference + ' day';
- if (daysDifference > 1) string += 's';
- string += ' ';
- }
- var difference = Date.UTC(now.getYear(),now.getMonth(),now.getDate(),now.getHours(),now.getMinutes(),now.getSeconds()) -
- Date.UTC(now.getYear(),now.getMonth(),now.getDate(),0,0,0);
- difference = 1000*60*60*24 - difference;
- var hoursDifference = Math.floor(difference/1000/60/60);
- difference = difference - hoursDifference*1000*60*60
- var minutesDifference = Math.floor(difference/1000/60);
- difference = difference - minutesDifference*1000*60
- var secondsDifference = Math.floor(difference/1000);
- if (hoursDifference > 0) {
- string += hoursDifference + ' hour';
- if (hoursDifference > 1) string +='s';
- string += ' ';
- }
- if (minutesDifference > 0) {
- string += minutesDifference + ' minute';
- if (minutesDifference > 1) string +='s';
- string += ' ';
- }
- if (secondsDifference > 0) {
- string += secondsDifference + ' second';
- if (secondsDifference > 1) string +='s';
- string += ' ';
- }
- return string;
- }
- 调用例子,例如现在到31/12/1999还有多久。
- document.write(timeTillDate(31,12,1999));
7、如何在一个日期中增加几个月后并能够正确显示出来
- function makeArray() {
- for (i = 0; i<makeArray.arguments.length; i++)
- this[i + 1] = makeArray.arguments[i];
- }
- var months = new makeArray('January','February','March','April',
- 'May','June','July','August','September',
- 'October','November','December');
- function nths(day) {
- if (day == 1 || day == 21 || day == 31) return 'st';
- else if (day == 2 || day == 22) return 'nd';
- else if (day == 3 || day == 23) return 'rd';
- else return 'th';
- }
- function y2k(number) { return (number < 1000) ? number + 1900 : number; }
- function monthsahead(noofmonths) {
- var today = new Date();
- var date = new Date(today.getYear(),today.getMonth() + noofmonths,today.getDate(),today.getHours(),today.getMinutes(),today.getSeconds())
- return date.getDate() + nths(date.getDate()) + ' ' + months[date.getMonth() + 1] + ' ' + y2k(date.getYear())
- }
- 调用例子:
- document.write(monthsahead(6));


