-- 作者:admin
-- 发布时间:2009/3/10 16:07:14
-- [转帖]JavaScript日期处理函数大全
1。解决2000问题 function y2k(number) { return (number < 1000) ? number + 1900 : number; } 2。检查日期是否合法 // 当输入参数为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 }
以下是调用例子: if (isDate(31,2,1997)) document.write("Valid"); else document.write("Invalid");
3。如何判断两个日期中的间隔天数 function daysElapsed(date1,date2) { var difference = Date.UTC(date1.getYear(),date1.getMonth(),date1.getDate(),0,0,0) - Date.UTC(date2.getYear(),date2.getMonth(),date2.getDate(),0,0,0); return difference/1000/60/60/24; }
4。如何将一个下拉列表框中的月份传递到另一页 <FORM> <SELECT NAME="selectName"> <OPTION>January <OPTION>February <OPTION>March <OPTION>April <OPTION>May <OPTION>June <OPTION>July <OPTION>August <OPTION>Spetember <OPTION>October <OPTION>November <OPTION>December </SELECT> <INPUT TYPE="BUTTON" VALUE="Go" > </FORM>
在nextpage.html中加入下面的代码 <FORM name="formName"><INPUT TYPE="TEXT" name="textName"><FORM> <SCRIPT LANGUAGE="JavaScript">< document.formName.textName.value = location.search.substring(1); //-SCRIPT>
或则: <SCRIPT LANGUAGE="JavaScript">< document.write("<FORM>< INPUT TYPE=\'TEXT\' "); document.write("VALUE=\'"location.search.substring(1)+"FORM>") //-SCRIPT>
5。如何将一个字符串中的时间和当前时间做比较 <SCRIPT LANGUAGE="JavaScript"> /*其中的日期字符串可有以下格式: 格式 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\'); //- </SCRIPT>
6。如何根据一个人的生日计算他的岁数 <SCRIPT LANGUAGE="JavaScript">< /*其中的日期字符串可有以下格式: 格式 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>\') //-SCRIPT>
7。如何使用下面的格式dd/mm/yy在网页中显示日期 <SCRIPT LANGUAGE = \'JavaScript\'> <!- 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); //- </SCRIPT>
8。如何使用下面的格式date month year在网页中显示日期 <SCRIPT LANGUAGE = \'JavaScript\'> <!- function makeArray() { for (i = 0; i<makeArray.arguments.length; i++) this[i + 1] = makeArray.arguments; }
var months = new makeArray(\'January\',\'February\',\'March\', \'April\',\'May\',\'June\',\'July\',\'August\',\'September\', \'October\',\'November\',\'December\');
var date = new Date(); var day = date.getDate(); var month = date.getMonth() + 1; var yy = date.getYear(); var year = (yy < 1000) ? yy + 1900 : yy;
document.write(day + " " + months[month] + " " + year); //- </SCRIPT>
9.如何让我的网页的最近更新日期更易读 <SCRIPT LANGUAGE = \'JavaScript\'>< function makeArray0() { for (i = 0; i<makeArray0.arguments.length; i++) this = makeArray0.arguments; } 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()) + "." //-SCRIPT>
10。如何显示到某个特定日期的倒记时 <SCRIPT LANGUAGE="JavaScript">< 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)); //-SCRIPT>
11。如何从一个日期中减掉几个小时 <SCRIPT LANGUAGE = \'JavaScript\'>< var date = new Date(); var date = new Date(Date.UTC(date.getYear(),date.getMonth(),date.getDate(),date.getHours(),date.getMinutes(),date.getSeconds()) - 5*60*60*1000); document.write(date); //-SCRIPT>
12。如何在一个日期中增加几个月后并能够正确显示出来 <SCRIPT LANGUAGE="JavaScript">< function makeArray() { for (i = 0; i<makeArray.arguments.length; i++) this[i + 1] = makeArray.arguments; } 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)); //-SCRIPT>
[此贴子已经被作者于2010-12-12 10:34:20编辑过]
|