Adobe Air中两个日期之间的日期差异
问题描述:
如何使用Flex Builder 4.5通过Adobe Air Desktop应用程序中的DateChooser组件比较用户选择的两个日期(日期(天))之间的差异?在柔性Adobe Air中两个日期之间的日期差异
import mx.controls.DateChooser;
import mx.controls.Text;
private var date1:String;
date1 = date_from.text; //giving error 1120:Access of undefined property date_form
答
<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx">
<fx:Script>
<![CDATA[
import flash.utils.getTimer;
import mx.events.CalendarLayoutChangeEvent;
import mx.events.FlexEvent;
protected function
datechooser_changeHandler(event:CalendarLayoutChangeEvent):void
{
var dateDiff:Number
dateDiff=new Date(dChs1.selectedDate).time-new
Date(dChs2.selectedDate).time
trace (Math.round((dateDiff/86400000)).toString())
}
protected function dChs_initializeHandler(event:FlexEvent):void
{
var today:Date=new Date()
event.target.selectedDate=today
}
]]>
</fx:Script>
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<s:layout>
<s:VerticalLayout/>
</s:layout>
<mx:DateChooser id="dChs1" change="datechooser_changeHandler(event)"
initialize="dChs_initializeHandler(event)">
</mx:DateChooser>
<mx:DateChooser id="dChs2" change="datechooser_changeHandler(event)"
initialize="dChs_initializeHandler(event)">
</mx:DateChooser>
</s:WindowedApplication>
答
日期数学甚少的支持,非常不准确看起来。 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;
}
+0
感谢您的编辑,错过了我发布之前的阅读! – 2016-07-15 19:15:58
谢谢一位朋友。只是几个变化及其工作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