加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 04:26:41 所属栏目:百科 来源:网络整理
导读:? package common { ?/** ? *@title as3指定的两个公历日期相差天数类库 ? *@author ? *@version 0.1 ? *@date 2010.08.17 ? *@environment as3.0 FlashPlayer9 ? *@调用方式 trace(SelfDateUtil.manyDayNum("20081230","20110317")); ? * */ ?public class

?

package common
{

?/**
? *@title as3指定的两个公历日期相差天数类库
? *@author
? *@version 0.1
? *@date 2010.08.17
? *@environment as3.0 FlashPlayer9
? *@调用方式 trace(SelfDateUtil.manyDayNum("20081230","20110317"));
? * */


?public class SelfDateUtil
?{
??public function SelfDateUtil()
??{
??}

??/**
?? * 虽然名字为fromFormatDayStr和toFormatDayStr, 单两个参数所代表的开始和结束年份没有先后顺序;如:
?? * SelfDateUtil.manyDayNum("20081230","20110317")与SelfDateUtil.manyDayNum("20110317","20081230")等效。
?? * */
??public static 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]表示还剩下多少天 */
??public static 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*/
??public static 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;
???}
??}
?}

}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读