As3 计算两个日期之间的天数差
/*日期转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 计算两个日期之间的天数差的更多相关文章
- 计算两个日期之间的天数差C++/java
1--Java 分析:调用java中Calendar类 int days(Date date1,Date date2){ Calendar cal = new Calendar.getInstance ...
- JS计算两个日期之间的天数
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- c#后台计算2个日期之间的天数差
/ 计算2个日期之间的天数差 DateTime dt1 = Convert.DateTime("2007-8-1"); DateTime dt2 = Convert.DateTi ...
- iOS 计算两个日期之间的天数问题
//获取当前时间若干年.月.日之后的时间 + (NSDate *)dateWithFromDate:(NSDate *)date years:(NSInteger)years months:(NSIn ...
- java计算两个日期之间的天数,排除节假日和周末
如题所说,计算两个日期之前的天数,排除节假日和周末.这里天数的类型为double,因为该功能实现的是请假天数的计算,有请一上午假的为0.5天. 不够很坑的是每个日期都要查询数据库,感觉很浪费时间. 原 ...
- element ui 日期控件范围时间限制记录、以及计算两个日期之间的天数
日期的筛选经常会有最小的日期选择,例如:当前日期 :clearable="false" :picker-options="pickerOptions0" val ...
- mysql计算两个日期之间的天数
MYSQL自带函数计算给定的两个日期的间隔天数 有两个途径可获得 1.利用TO_DAYS函数 select to_days(now()) - to_days('20120512') 2 ...
- JS计算两个日期之间的天数,时间差计算
1.日期之间的天数计算 //计算天数差的函数,通用 function DateDiff(sDate1, sDate2) { //sDate1和sDate2是2017-9-25格式 var aDate, ...
- JavaScript实现计算两个日期之间的天数
以“yyyy-MM-dd”格式为例,现在有两个日期,分别为“2006-01-01”,“2007-05-20”. 1.调用Date.parser()方法,将字符串格式的时间戳转换为Date类型时间对象: ...
随机推荐
- 298. Binary Tree Longest Consecutive Sequence
题目: Given a binary tree, find the length of the longest consecutive sequence path. The path refers t ...
- swift:Optional Type 、Swift和Objective-C混编的讲解
❤️❤️❤️swift中的Optional Type的?和!含义:其实就是一个装包和拆包的过程 optional的含义: Optional事实上是一个枚举类型,Optional包含None和Some两 ...
- Android 时间格式的正则表达式
//日期格式yyyy PatternsDict.date_y= /^(\d{4})$/; //日期格式yyyy-mm PatternsDict.date_ym= /^(\d{4})-(0\d{1} ...
- linux下c程序调用reboot函数实现直接重启【转】
转自:http://www.blog.chinaunix.net/uid-20564848-id-73878.html linux下c程序调用reboot函数实现直接重启 当然你也可以直接调用syst ...
- flex 4 布局样式
Flex 4 样式与布局 第一篇 Flex 4 与自定义布局(Layout) Flex 4/Spark组件架构的新功能之一是可以定制一个容器的布局而不必改变容器本身.您需要做的就是定义一个自定义布局. ...
- SQL —— 一些需要注意的地方(持续更新)
TRUNCATE 只适用全表,没有 WHERE 语句 rownum < N 不能和 group by 一起使用 NULL 值通常会限制索引.在创建表时对某一列指定 NOT NULL 或 DEFA ...
- Mac 如何截屏(快捷键)
全屏截图:Command + Shift + 3 使用快捷键后会马上截取当前的全屏 指定区域截图:Command + Shift + 4 使用快捷键后会出来一个带有座标的瞄准器,用鼠标的拖放可以选择需 ...
- [原]poj-3009-Curling 2.0-dfs
题目太长就不贴了,题意: 上下左右四联通块,2表示起点,3表示终点,1为block,0为空地,每动一次冰壶,冰壶就会向推动的方向一直移动,直到碰到block或出界,如果碰到block就在block前停 ...
- [ionic开源项目教程] - 第12讲 医疗模块的实现以及Service层loadMore和doRefresh的提取封装
关注微信订阅号:TongeBlog,可查看[ionic开源项目]全套教程. 这一讲主要实现tab2[医疗]模块,[医疗]模块跟tab1[健康]模块类似. [ionic开源项目教程] - 第12讲 医疗 ...
- HDU 2147 (博弈) kiki's game
无奈英语不好又被坑,看到棋子能左移下移左下移,想当然地以为是Wythoff博弈了,=u= 题的意思是说每次只能选一个方向移动一步,所以找找规律就是横纵坐标为奇数的时候是必败状态. 从http://ww ...