繁体中文
设为首页
加入收藏
当前位置:ASP技术首页 >> ASP基础 >> jsMonthView1.1。对日期的判断更加精准,另外增加了自定义属性的示例代码,示例代码是将

jsMonthView1.1。对日期的判断更加精准,另外增加了自定义属性的示例代码,示例代码是将

2006-06-15 08:00:00  作者:  来源:互联网  浏览次数:0  文字大小:【】【】【
简介:this.GetTextDate = function(theString){ //convert a string to a date, if the string is not a date, return a empty string var i = 0, j = 0, tmpChar = "", find_tag = ""; var start_at = 0, end_at = 0...

this.GetTextDate = function(theString){ //convert a string to a date, if the string is not a date, return a empty string

var i = 0, j = 0, tmpChar = "", find_tag = "";

var start_at = 0, end_at = 0, year_at = 0, month_at = 0, day_at = 0;

var tmp_at = 0, one_at = 0, two_at = 0, one_days = 0, two_days = 0;

var aryDate = new Array();

var tmpYear = -1, tmpMonth = -1, tmpDay = -1;

var tmpDate = theString.toLowerCase();

var defDate = "";

tmpDate = tmpDate.replace(/(\D)0(\d)/g, "$1-$2");

for (i = 0; i < 9; i++){

tmpDate = tmpDate.replace(this.MonthName[i].toLowerCase().substr(0,3), "-00" + (i+1).toString() + "-");

}

for (i = 9; i < 12; i++){

tmpDate = tmpDate.replace(this.MonthName[i].toLowerCase().substr(0,3), "-0" + (i+1).toString() + "-");

}

tmpDate = tmpDate.replace(/jan/g, "-001-");

tmpDate = tmpDate.replace(/feb/g, "-002-");

tmpDate = tmpDate.replace(/mar/g, "-003-");

tmpDate = tmpDate.replace(/apr/g, "-004-");

tmpDate = tmpDate.replace(/may/g, "-005-");

tmpDate = tmpDate.replace(/jun/g, "-006-");

tmpDate = tmpDate.replace(/jul/g, "-007-");

tmpDate = tmpDate.replace(/aug/g, "-008-");

tmpDate = tmpDate.replace(/sep/g, "-009-");

tmpDate = tmpDate.replace(/oct/g, "-010-");

tmpDate = tmpDate.replace(/nov/g, "-011-");

tmpDate = tmpDate.replace(/dec/g, "-012-");

for (i = 0; i < tmpDate.length; i++){

tmpChar = tmpDate.charAt(i);

if (((tmpChar < "0") || (tmpChar>"9")) && (tmpChar != "-")){

tmpDate = tmpDate.replace(tmpChar, "-")

}

}

while (tmpDate.indexOf("--") != -1){

tmpDate = tmpDate.replace(/--/g, "-");

}

start_at = 0;

end_at = tmpDate.length-1;

while (tmpDate.charAt(start_at) == "-"){

start_at++;

}

while (tmpDate.charAt(end_at) == "-"){

end_at--;

}

if (start_at < end_at+1){

tmpDate = tmpDate.substring(start_at, end_at + 1);

}else{

tmpDate = "";

}

aryDate = tmpDate.split("-");

if (aryDate.length != 3){

return(defDate);

}

tmp_at = 0;

for (i = 0; i < 3; i++){

if (parseInt(aryDate[i], 10)==0){

tmp_at++;

year_at = i;

}

}

if (tmp_at > 1){

return(defDate);

}

if (tmp_at == 1){

aryDate[year_at] = this.GetFormatYear(aryDate[year_at]).toString();

}

tmpDate = this.DateFormat;

year_at = tmpDate.indexOf("");

if (year_at == -1){

year_at = tmpDate.indexOf("");

}

month_at = tmpDate.indexOf("");

if (month_at == -1){

month_at = tmpDate.indexOf("");

}

if (month_at == -1){

month_at = tmpDate.indexOf("");

}

if (month_at == -1){

month_at = tmpDate.indexOf("");

}

day_at = tmpDate.indexOf("

");

if (day_at == -1){

day_at = tmpDate.indexOf("");

}

find_tag = "000";

for (i = 0; i < 3; i++){

if (aryDate[i].length == 3){

if ((aryDate[i] >= "001") && (aryDate[i] <= "012")){

if (find_tag != "000"){

return(defDate);

}

tmpMonth = parseInt(aryDate[i], 10) - 1;

switch (i){

case 0:

find_tag = "100";

one_at = parseInt(aryDate[1], 10);

two_at = parseInt(aryDate[2], 10);

break;

case 1:

find_tag = "010";

one_at = parseInt(aryDate[0], 10);

two_at = parseInt(aryDate[2], 10);

break;

case 2:

find_tag = "001";

one_at = parseInt(aryDate[0], 10);

two_at = parseInt(aryDate[1], 10);

break;

}

}

}

}

if (find_tag!="000"){

one_days = this.GetMonthDays(two_at, tmpMonth);

two_days = this.GetMonthDays(one_at, tmpMonth);

if ((one_at > one_days) && (two_at > two_days)){

return(defDate);

}

if ((one_at <= one_days) && (two_at > two_days)){

tmpYear = this.GetFormatYear(two_at);

tmpDay = one_at;

}

if ((one_at > one_days) && (two_at <= two_days)){

tmpYear = this.GetFormatYear(one_at);

tmpDay = two_at;

}

if ((one_at <= one_days) && (two_at <= two_days)){

switch (find_tag){

case "100": //default month,day,year

tmpDay = one_at;

tmpYear = this.GetFormatYear(two_at);

if ((month_at > year_at) && (month_at > day_at)){

if (day_at > year_at){

tmpYear = this.GetFormatYear(one_at);

tmpDay = two_at;

}

}

break;

case "010": //default day,month,year

tmpDay = one_at;

tmpYear = this.GetFormatYear(two_at);

if (((month_at > year_at) && (month_at < day_at)) || ((month_at < year_at) && (month_at > day_at))){

if (day_at > year_at){

tmpYear = this.GetFormatYear(one_at);

tmpDay = two_at;

}

}

break;

case "001": //default year,day,month

tmpYear = this.GetFormatYear(one_at);

tmpDay = two_at;

if ((month_at < year_at) && (month_at < day_at)){

if (year_at > day_at){

tmpDay = one_at;

tmpYear = this.GetFormatYear(two_at);

}

}

break;

default: //default day,year

tmpDay = one_at;

tmpYear = this.GetFormatYear(two_at);

}

}

return(new Date(tmpYear, tmpMonth, tmpDay));

}

find_tag = "000";

for (i = 0; i < 3; i++){

if (parseInt(aryDate[i], 10) > 31){

if (find_tag!="000"){

return(defDate);

}

tmpYear = this.GetFormatYear(aryDate[i]);

switch (i){

case 0:

find_tag = "100";

one_at = parseInt(aryDate[1], 10);

two_at = parseInt(aryDate[2], 10);

break;

case 1:

find_tag = "010";

one_at = parseInt(aryDate[0], 10);

two_at = parseInt(aryDate[2], 10);

break;

case 2:

find_tag = "001";

one_at = parseInt(aryDate[0], 10);

two_at = parseInt(aryDate[1], 10);

break;

}

}

}

if (find_tag == "000"){

if ((year_at > month_at) && (year_at > day_at)){

find_tag = "001";

}

if ((year_at > month_at) && (year_at < day_at)){

find_tag = "010";

}

if ((year_at < month_at) && (year_at > day_at)){

find_tag = "010";

}

if ((year_at < month_at) && (year_at < day_at)){

find_tag = "100";

}

switch (find_tag){

case "100":

tmpYear = parseInt(aryDate[0], 10);

one_at = parseInt(aryDate[1], 10);

two_at = parseInt(aryDate[2], 10);

break;

case "010":

one_at = parseInt(aryDate[0], 10);

tmpYear = parseInt(aryDate[1], 10);

two_at = parseInt(aryDate[2], 10);

break;

case "001":

one_at = parseInt(aryDate[0], 10);

two_at = parseInt(aryDate[1], 10);

tmpYear = parseInt(aryDate[2], 10);

break;

}

tmpYear = this.GetFormatYear(tmpYear);

}

if (find_tag == "000"){

return(defDate);

}else{

if ((one_at > 12) && (two_at > 12)){

return(defDate);

}

if ((one_at <= 12) && (two_at > 12)){

if (two_at > this.GetMonthDays(tmpYear,one_at-1)){

return(new Date(tmpYear, one_at-1, this.GetMonthDays(tmpYear,one_at-1)));

}else{

return(new Date(tmpYear, one_at-1, two_at));

}

}

if ((one_at > 12) && (two_at <= 12)){

if (one_at > this.GetMonthDays(tmpYear,two_at-1)){

return(new Date(tmpYear, two_at-1, this.GetMonthDays(tmpYear,two_at-1)));

}else{

return(new Date(tmpYear, two_at-1, one_at));

}

}

if ((one_at <= 12) && (two_at <= 12)){

tmpMonth = one_at-1;

tmpDay = two_at;

if (month_at > day_at){

tmpMonth = two_at-1;

tmpDay = one_at;

}

return(new Date(tmpYear, tmpMonth, tmpDay));

}

}

}

this.CreateYearList = function(MinYear, MaxYear){ //create year list

var theName = this.Name;

var theYearObject = document.all.item(theName + "_YearList");

if (theYearObject == null){

return;

}

var theYear = 0;

var theYearHTML = "";

theYearObject.outerHTML = theYearHTML;

}

this.CreateMonthList = function( ){ //create month list

var theName = this.Name;

var theMonthObject = document.all.item(theName + "_MonthList");

if (theMonthObject == null){

return;

}

var theMonth = 0;

var theMonthHTML = "";

theMonthObject.outerHTML = theMonthHTML;

}

this.setDayList = function(theYear, theMonth, theDay){ //set the month view show a date

var theName = this.Name;

var theDayObject = document.all.item(theName + "_DayList");

if (theDayObject == null){

return;

}

theDayObject.value = theDay.toString();

var theFirstDay = new Date(theYear, theMonth, 1);

var theCurrentDate = new Date();

var theWeek = theFirstDay.getDay();

if (theWeek == 0){

theWeek = 7;

}

var theLeftDay = 0;

if (theMonth == 0){

theLeftDay = 31;

}else{

theLeftDay = this.GetMonthDays(theYear, theMonth - 1);

}

var theRightDay = this.GetMonthDays(theYear, theMonth);

var theCurrentDay = theLeftDay - theWeek + 1;

var offsetMonth = -1; //the month is previous month

var theColor = this.InvalidColor;

var theBgColor = this.UnselectBgColor;

var theBdColor = theBgColor;

var WeekId = 0

var DayId = 0;

var theStyle = "";

var theDayHTML = "";

theDayHTML += "

";

for (DayId = 0; DayId < 7; DayId++){

theDayHTML += "

";

}

theDayHTML += "

";

theDayHTML += "

";

theDayHTML += "

";

theDayHTML += "

";

for (WeekId = 0; WeekId < 6; WeekId++){

theDayHTML += "

";

for (DayId = 0; DayId < 7; DayId++){

if ((theCurrentDay > theLeftDay) && (WeekId < 3)){

offsetMonth++; //the month is current month;

theCurrentDay = 1;

}

if ((theCurrentDay > theRightDay) && (WeekId > 3)){

offsetMonth++; //the month is next month;

theCurrentDay = 1;

}

switch (offsetMonth){

case -1:

theColor = this.InvalidColor;

break;

case 1:

theColor = this.InvalidColor;

break;

case 0:

if ((DayId == 0) || (DayId == 6)){

theColor = this.WeekendColor;

}else{

theColor = this.ValidColor;

}

break;

}

if ((DayId == 0) || (DayId == 6)){

theBgColor = this.WeekendBgColor;

}else{

theBgColor = this.UnselectBgColor;

}

theBdColor = this.DayBdColor;

if ((theCurrentDay == theDay) && (offsetMonth == 0)){

theColor = this.SelectedColor;

theBgColor = this.SelectedBgColor;

theBdColor = theBgColor;

}

if ((theYear == theCurrentDate.getFullYear()) && (theMonth == theCurrentDate.getMonth()) && (theCurrentDay == theCurrentDate.getDate()) && (offsetMonth == 0)){

theBdColor = this.TodayBdColor;

}

theStyle = "border:" + this.DayBdWidth + " solid " + theBdColor + "; color:" + theColor + "; background-color:" + theBgColor + ";";

theDayHTML += "

";

theCurrentDay++;

}

theDayHTML += "

";

}

theDayHTML += "

";

theStyle = "border:" + this.DayBdWidth + " solid " + this.TodayBdColor + "; " + this.TodayListStyle + ";";

theDayHTML += "

";

theDayHTML += "

";

theDayHTML += "

";

theDayHTML += "

" + this.WeekName[DayId] + "
";

theDayHTML += " ";

theDayHTML += "

";

theDayHTML += "

";

theDayHTML += "

";

theDayHTML += theCurrentDay.toString();

theDayHTML += "


" + this.TodayTitle + " " + this.SetDateFormat(theCurrentDate.getFullYear(), theCurrentDate.getMonth(), theCurrentDate.getDate()) + "
";

var theMonthGrid = document.all.item(theName + "_MonthGrid");

theMonthGrid.innerHTML = theDayHTML;

}

责任编辑:admin
相关文章