/*日期转YYYYMMDD*/
formDate.fullYear+""+(formDate.month<10?("0"+formDate.month):formDate.month)+""+(formDate.day<10?("0"+formDate.day):formDate.day),

/**
* 虽然名字为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;
}
}

  

As3 计算两个日期之间的天数差的更多相关文章

  1. 计算两个日期之间的天数差C++/java

    1--Java 分析:调用java中Calendar类 int days(Date date1,Date date2){ Calendar cal = new Calendar.getInstance ...

  2. JS计算两个日期之间的天数

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  3. c#后台计算2个日期之间的天数差

    / 计算2个日期之间的天数差 DateTime dt1 = Convert.DateTime("2007-8-1");  DateTime dt2 = Convert.DateTi ...

  4. iOS 计算两个日期之间的天数问题

    //获取当前时间若干年.月.日之后的时间 + (NSDate *)dateWithFromDate:(NSDate *)date years:(NSInteger)years months:(NSIn ...

  5. java计算两个日期之间的天数,排除节假日和周末

    如题所说,计算两个日期之前的天数,排除节假日和周末.这里天数的类型为double,因为该功能实现的是请假天数的计算,有请一上午假的为0.5天. 不够很坑的是每个日期都要查询数据库,感觉很浪费时间. 原 ...

  6. element ui 日期控件范围时间限制记录、以及计算两个日期之间的天数

    日期的筛选经常会有最小的日期选择,例如:当前日期 :clearable="false" :picker-options="pickerOptions0" val ...

  7. mysql计算两个日期之间的天数

    MYSQL自带函数计算给定的两个日期的间隔天数   有两个途径可获得   1.利用TO_DAYS函数   select to_days(now()) - to_days('20120512')   2 ...

  8. JS计算两个日期之间的天数,时间差计算

    1.日期之间的天数计算 //计算天数差的函数,通用 function DateDiff(sDate1, sDate2) { //sDate1和sDate2是2017-9-25格式 var aDate, ...

  9. JavaScript实现计算两个日期之间的天数

    以“yyyy-MM-dd”格式为例,现在有两个日期,分别为“2006-01-01”,“2007-05-20”. 1.调用Date.parser()方法,将字符串格式的时间戳转换为Date类型时间对象: ...

随机推荐

  1. JVM垃圾回收机制总结(4) :新一代的垃圾回收算法

    垃圾回收的瓶颈 传统分代垃圾回收方式,已经在一定程度上把垃圾回收给应用带来的负担降到了最小,把应用的吞吐量推到了一个极限.但是他无法解决的一个问题,就是Full GC所带来的应用暂停.在一些对实时性要 ...

  2. Matlab绘图高级部分

    图形是呈现数据的一种直观方式,在用Matlab进行数据处理和计算后,我们一般都会以图形的形式将结果呈现出来.尤其在论文的撰写中,优雅的图形无疑会为文章加分.本篇文章非完全原创,我的工作就是把见到的Ma ...

  3. 局部敏感哈希Locality Sensitive Hashing(LSH)之随机投影法

    1. 概述 LSH是由文献[1]提出的一种用于高效求解最近邻搜索问题的Hash算法.LSH算法的基本思想是利用一个hash函数把集合中的元素映射成hash值,使得相似度越高的元素hash值相等的概率也 ...

  4. Eclipse 下如何删除一个项目的 SVN 信息

    选中项目,右键 - Team - 断开连接 出现如下对话框,根据需要,选择 “删除”或者“不删除”,点击 Yes 即可

  5. UVa 10154 - Weights and Measures

    UVa 10154 - Weights and Measures I know, up on top you are seeing great sights,  But down at the bot ...

  6. oracle创建表空间、创建用户、授权、夺权、删除用户、删除表空间

    表空间定义 表空间是为了统一ORACLE物理和逻辑上的结构而专门建立的,从物理上来说,一个表空间是由具体的一个或多个磁盘上数据文件构成的(至少1对1,可以1对多),从逻辑上来说一个表空间是由具体的一个 ...

  7. JavaScript高级程序设计之数据类型

    首先讲讲关于js文件放置的问题,如果把<script>放在head标签处,浏览器会先加载完该处的所有不使用defer属性的js文件再呈现页面的内容(浏览器在遇到body标签时才呈现内容), ...

  8. android异步任务详解 AsynTask

    android提供了一套专门用于异步处理的类.即:AynsTask类.使用这个类可以为耗时程序开辟一个新线程进行处理,处理完时返回. 其实,AsynTask类就是对Thread类的一个封装,并且加入了 ...

  9. jQuery_添加与删除元素

    一.jQuery添加元素(通过 jQuery,可以很容易地添加新元素/内容.) 1.添加新的 HTML 内容,用于添加新内容的四个 jQuery 方法(都能解析HTML标签): append() - ...

  10. CSS之可收缩的底部边框

    简述 <div>用来定义文档中的分区或节,<span>用来组合文档中的行内元素.我们可以通过<div>和 <span>将HTML元素组合起来. 下面我们 ...