`
fuerbosi
  • 浏览: 464094 次
文章分类
社区版块
存档分类
最新评论

Flex 日期计算用法举例

 
阅读更多

最近flex项目中用到了关于日期时间的计算,也从网上找了些资料。自己整理了一下,方便以后查询
1.计算一个月的最后一天:

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
			  xmlns:s="library://ns.adobe.com/flex/spark"
			  xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"
			  initialize="application1_initializeHandler(event)"
			  >
	<s:layout>
		<s:BasicLayout/>
	</s:layout>
	<fx:Declarations>
		<!-- 将非可视元素(例如服务、值对象)放在此处 -->
	</fx:Declarations>
	
	<fx:Script>
		<![CDATA[
			
			import mx.controls.Alert;
			import mx.events.FlexEvent;
			import mx.states.SetStyle;
			
			private function computeFinalDay():void{
				var nowDate:Date = new Date();
				var nowyear:String = nowDate.getFullYear().toString();
				var nowmonth:String = (nowDate.getMonth()+1).toString().length == 1?"0"+(nowDate.getMonth()+1).toString():(nowDate.getMonth()+1).toString();
				
				var lastdaysOfMonth:String = daysOfMonth(nowyear+nowmonth); 
				Alert.show("当月最后一天"+lastdaysOfMonth);
			}
			
		public	function daysOfMonth(Month:String):String{ 
				var currentMonth:Date = new Date(Month.substring(0,4), Month.substring(4,6), 1); 
				var lastMonth:Date = new Date(Month.substring(0,4), String(Number(Month.substring(4,6))-1), 1); 
				var diffDays:Number = currentMonth.valueOf() - lastMonth.valueOf();  
				return currentMonth.getMonth()+"-"+(diffDays/( 24 * 60 * 60 * 1000)); 
			} 


			/**
			 * 初始化函数
			 * 作者:
			 * 日期:
			 * **/
			protected function application1_initializeHandler(event:FlexEvent):void
			{
				computeFinalDay();
			}


		]]>
	</fx:Script>
	
</s:Application>

2.计算当前天和当前月的当前天。
	                       
//计算当前日期的前一天
var _date:Date = new Date();
_date.setDate(_date.getDate()-1);



//计算当前月的第一天
var eyear:int = _date.getFullYear();
var emonth:int = _date.getMonth();
var eday:int = 1 ;

select_date.selectedDate = new Date(eyear, emonth, eday);
selectTo_date.selectedDate = _date;


3.计算两时间的差值
var date1:Date ;

var date2:Date;

var num1:Number =date1.valueOf();

var num2:Number =date2.valueOf();

var different:Number = num2-num1;


var diffDay:int = int(diff/24/60/60/1000);//方法1

var d1Days : int = int(num1/ 24 / 60 / 60 / 1000);
var d2Days : int = int(num2/ 24 / 60 / 60 / 1000); 

说明:日期类型 Date 的方法 valueOf 返回指定日期自 1970年1月1日凌晨开始的间隔毫秒数,然后每天的毫秒数是:24*60*60*1000,然后再计算相差的天数
方法一:计算两个日期之间间隔的毫秒数,再运算得到间隔天数
方法二:计算两个日期基于基准日期的天数,再计算差值

4.时间相加

以下是时间相加的公共方法,参数分别为:datepart代表添加的时间类型(可以为年、月、天等等),number代表添加的时间类型的具体值,代表从那天开始添加。例如:
dateAdd("month",5,new Date())就表示在当前时间基础上添加5个月。

private function dateAdd(datepart:String="", number:Number=0, date:Date=null):Date
    {
     if (date == null)
     {
      date=new Date();
     }

     var returnDate:Date=new Date(date.time);
     switch (datepart.toLowerCase())
     {
      case "fullyear":
      case "month":
      case "date":
      case "hours":
      case "minutes":
      case "seconds":
      case "milliseconds":
       returnDate[datepart]+=number;
       break;
      default:
       break;
     }
     var newdate:Date=new Date(returnDate.getFullYear(), returnDate.getMonth(), returnDate.date - 1);
     return newdate;
    }

5.对日期加1天。
           //给定的日期上加一天
            private function addOneDay(day:int, mydate:Date):Date
            {
                var returnDate:Date = new Date(mydate.time);
                returnDate['date'] += day //day就是你要加的天数,如果是加1天则为1,如果是减天则为-1
                return returnDate;   
            } 


参考地址: www.xiebinghu.iteye.com/blog/569355
(完,待续....................................................)

分享到:
评论
1 楼 zjhdreams 2013-11-04  
哪个写的DateAdd方法,写得太臭了,还有BUG,时间到了11月1日,12月1日加出来的年就不正确了,坑啊,不知道那些人在用哦,太挫了

相关推荐

Global site tag (gtag.js) - Google Analytics