首页 > 其他分享 >As3 计算两个日期之间的天数差

As3 计算两个日期之间的天数差

时间:2022-12-14 10:01:17浏览次数:44  
标签:As3 int 天数 Number month 日期 alreadyDayNum else day

/*日期转YYYYMMDD*/
formDate.fullYear + "" + (formDate.month < 10 ? ("0" + formDate.month) : formDate.month) + "" + (formDate.day < 10 ? ("0" + formDate.day) : formDate.day), < br data - filtered = "filtered" > < br data - filtered = "filtered" > < br data - filtered = "filtered" >
/**
 * 虽然名字为fromFormatDayStr和toFormatDayStr, 单两个参数所代表的开始和结束年份没有先后顺序;如:
 * SelfDateUtil.manyDayNum("20081230", "20110317")与SelfDateUtil.manyDayNum("20110317", "20081230")等效。
 * */
private function manyDayNum(fromFormatDayStr: String, toFormatDayStr: String): Number {
	var manyAllDayNum: Number = 0; //间隔的天数
	var _fromYear: int = int(fromFormatDayStr.substr(0, 4));
	var _toYear: int = int(toFormatDayStr.substr(0, 4));
	if (_toYear == _fromYear) { //同一年
		manyAllDayNum = Number(alreadyOverDay(toFormatDayStr)[0]) - Number(alreadyOverDay(fromFormatDayStr)[0]);
	} else if (Math.abs(_toYear - _fromYear) == 1) { //相差一年
		if (_toYear > _fromYear) {
			manyAllDayNum = Number(alreadyOverDay(fromFormatDayStr)[1]) + Number(alreadyOverDay(toFormatDayStr)[0]);
		} else {
			manyAllDayNum = Number(alreadyOverDay(toFormatDayStr)[1]) + Number(alreadyOverDay(fromFormatDayStr)[0]);
		}
	} else { //相差两年或者两年以上
		var mangYearNum: Number = Math.abs(Number(_toYear - _fromYear)); //中间间隔的年份
		if (_toYear > _fromYear) {
			manyAllDayNum = Number(alreadyOverDay(fromFormatDayStr)[1]) + Number(alreadyOverDay(toFormatDayStr)[0]);
			for (var i: int = 1; i < mangYearNum; i++) {
				if (isRunYear(String(_fromYear + i))) { //是闰年
					manyAllDayNum += 366;
				} else { //不是闰年
					manyAllDayNum += 365;
				}
			}
		} else {
			manyAllDayNum = Number(alreadyOverDay(toFormatDayStr)[1]) + Number(alreadyOverDay(fromFormatDayStr)[0]);
			for (var j: int = 1; j < mangYearNum; j++) {
				if (isRunYear(String(_toYear + j))) { //是闰年
					manyAllDayNum += 366;
				} else { //不是闰年
					manyAllDayNum += 365;
				}
			}
		}
	}
	return manyAllDayNum;
}

/**指定的一年之内已经过了多少天了(算上当天),
 *dayStr标准格式为YYYYMMDD,例如:20100816
 *要保证dayStr参数的格式和实际含义正确,如不能出现20100229
 *[0]表示已经过了多少天,[1]表示还剩下多少天 */
private function alreadyOverDay(dayFormatStr: String): Array {
	var _tempArr: Array = new Array();
	var alreadyDayNum: int = 0;
	var _year: int = int(dayFormatStr.substr(0, 4));
	var _month: int = int(dayFormatStr.substr(4, 2));
	var _day: int = int(dayFormatStr.substr(6, 2));
	if (_month == 1) {
		alreadyDayNum = _day;
	} else if (_month == 3) {
		alreadyDayNum = 31 + _day;
	} else if (_month == 4) {
		alreadyDayNum = 62 + _day;
	} else if (_month == 5) {
		alreadyDayNum = 92 + _day;
	} else if (_month == 6) {
		alreadyDayNum = 123 + _day;
	} else if (_month == 7) {
		alreadyDayNum = 153 + _day;
	} else if (_month == 8) {
		alreadyDayNum = 184 + _day;
	} else if (_month == 9) {
		alreadyDayNum = 215 + _day;
	} else if (_month == 10) {
		alreadyDayNum = 245 + _day;
	} else if (_month == 11) {
		alreadyDayNum = 276 + _day;
	} else if (_month == 12) {
		alreadyDayNum = 306 + _day;
	}
	if (isRunYear(dayFormatStr)) { //是闰年
		if (_month == 2) {
			alreadyDayNum = 31 + _day;
		} else if (_month == 1) {

		} else {
			alreadyDayNum += 29;
		}
		_tempArr[0] = alreadyDayNum; //已经过的天数(算上今天)
		_tempArr[1] = 366 - alreadyDayNum; //还剩多少天没有过
	} else { //不是闰年
		if (_month == 2) {
			alreadyDayNum = 31 + _day;
		} else if (_month == 1) {

		} else {
			alreadyDayNum += 28;
		}
		_tempArr[0] = alreadyDayNum; //已经过的天数(算上今天)
		_tempArr[1] = 365 - alreadyDayNum; //还剩多少天没有过
	}
	return _tempArr;
}

/*指定的一年中过了多少天了,dayStr标准格式为YYYYMMDD,例如:20100816*/
private function isRunYear(dayStr: String): Boolean {
	var _year: Number = Number(dayStr.substr(0, 4));
	if ((_year % 4 == 0 && _year % 100 != 0) || _year % 400 == 0) {
		return true;
	} else {
		return false;
	}
}

   出处:https://www.cnblogs.com/diulela/p/3718454.html

标签:As3,int,天数,Number,month,日期,alreadyDayNum,else,day
From: https://www.cnblogs.com/dt1991/p/16981310.html

相关文章