日期数学甚少的支持,非常不准确看起来。 Flex可能是出路的语言,但为了后代和任何遗留代码,请不要使用user1196374接受的答案。他们的回答很粗糙,非常不准确。
下面我已经包含了我为了执行所述目标而开发的代码,它最初在这篇文章中以他的代码作为起点。
声明,我不知道这是否涵盖了前面函数中的每个缺陷,也不知道它是否能很好地处理其他日历。然而,这是比接受的答案更好的解决方案。
public static function dateDiff(dateA:Date, dateB:Date): int{
var retVal:int = 0;
if(dateA != null && dateB!=null) {
retVal = roughDateDiff(toMidnightFromUTCDate(dateA),toMidnightFromUTCDate(dateB));
}
return retVal;
}
private static function roughDateDiff(dateA:Date, dateB:Date): int{
var retVal:int = 0;
if(dateA != null && dateB!=null){
if(dateA.time > dateB.time){
var dateDiff:Number = dateA.time - dateB.time;
retVal = Math.floor((dateDiff/86400000));
}else{
var dateDiff:Number = dateB.time - dateA.time;
retVal = Math.floor((dateDiff/86400000));
}
}
return retVal;
}
private static function toMidnightFromUTCDate(pre:Date):Date{
var post:Date = new Date(pre.toUTCString());
post.setUTCHours(0);
post.setUTCMinutes(0);
post.setUTCSeconds(0);
post.setUTCMilliseconds(0);
return post;
}
谢谢一位朋友。只是几个变化及其工作f9。添加两个变量private var dateDiff:Number = 0; \t \t \t [Bindable] private var daysDiff:String;和一些代码的变化:保护功能datechooser_changeHandler(事件:CalendarLayoutChangeEvent):无效 \t \t \t { \t \t \t \t \t \t \t \t DATEDIFF =新的日期(dChs1.selectedDate)。时间 - 新日期(dChs2.selectedDate)。时间 ; \t \t \t \t daysDiff =(Math.round((dateDiff/86400000))。toString()); \t \t \t} – developer 2012-02-08 10:38:26