2011-09-29 32 views
1

我有两个Datefields。是否有一种方法,我可以将第二个Datefield的日期设置为指定的范围(比如说三天...?。我试图做但不工作..不知道迄今为止转换回字符串并格式化..这里是代码Datefield范围 - Flex

<mx:DateField disabledRanges="{[{rangeEnd: new Date(2011,05,31)}]}" id="dfield1" change="leaveDate()" parseFunction="null" width="100" x="156" y="130"/> 
<mx:DateField disabledRanges="{[{rangeEnd: new Date(2011,05,31)}]}" id="dfield2" parseFunction="null" width="100" x="426" y="130"/> 

private function leaveDate():void { 
    //var dateLeave:Date = dfield1.selectedDate; 
    var myTime:Date =dfield1.selectedDate; 
    dateAdd("date", 3, myTime); 
    //car formatter1:Datef 
    commentField.text+=myTime+"\n" 
    //dfield2.selectedDate = returnDate 
} 
public static 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: 
      /* Unknown date part, do nothing. */ 
      break; 
    } 
     return returnDate; 
} 

这将是非常感激,如果有人可以帮助

回答

1

为了操作上的日期计算,你必须首先将其转换为数字,即日期时间或自1970年1月以来经过的秒数。然后,您可以在您的日期执行任何操作。例如:

// Today 
var today:Date = new Date(); 

// Tomorrow 
var tomorrow:Date = new Date(); 

// How many seconds in a day ? 
var secsInOneDay:Number = 60*60*24; 

// Changes the tomorrow date to actually be tomorrow ^^ 
tomorrow.setTime(today.getTime() + secsInOneDay); 
0

如果您希望禁用之前在dfield1选定日期的日期,三天后的日期后dfield1选择的日期,然后尝试这样:

<mx:DateField disabledRanges="{[{rangeEnd: new Date(2011,05,31)}]}" id="dfield1" change="leaveDate()" parseFunction="null" width="100" x="156" y="130"/> 
<mx:DateField disabledRanges="{[{rangeEnd: new Date(2011,05,31)}]}" id="dfield2" parseFunction="null" width="100" x="426" y="130"/> 

private function leaveDate():void { 
    dfield2.disabledRanges = [ { rangeEnd:new Date(
    dfield1.selectedDate.fullYear, 
    dfield1.selectedDate.month, 
    dfield1.selectedDate.date - 1) }, 
    { rangeStart:new Date(
    dfield1.selectedDate.fullYear, 
    dfield1.selectedDate.month, 
    dfield1.selectedDate.date + 3) } ]; 
}