apache-flex 两个日期的比较

hgb9j2n6  于 2022-11-01  发布在  Apache
关注(0)|答案(5)|浏览(160)

如何使用actionscript比较2个日期的值我在我的程序中执行了这段代码。

var time1:Date = new Date(Number(fromDate.substr(0,4)),Number(fromDate.substring(5,7))-1,    Number(fromDate.substring(8,10)));
var time2:Date = new Date(Number(toDate.substr(0,4)),Number(toDate.substring(5,7))-1, Number(toDate.substring(8,10)));

if(time1.getTime() > time2.getTime())
{ 
    Alert.show(time1 + ” is after ” + time2); 
}

IM获取错误:错误:标记流意外结束

8yparm6h

8yparm6h1#

AS3不支持像Python这样的时间增量类,所以这实际上有点棘手。在比较日期时,有很多事情需要担心:

  • 夏时制(某些国家的时钟在 Spring 和秋季每相差一小时)
  • 时区
  • 闰年

最简单的方法就是使用date对象的time属性,这样就可以得到两个日期之间的精确差值(以毫秒为单位):

var date1:Date = new Date(2001, 9, 12); // Oct. 12, 2001
var date2:Date = new Date(2010, 5, 22); // Jun. 22, 2010
var differenceInMilliseconds:Number = date2.time - date1.time;

使用time属性,您可以检查一个日期是否早于或晚于另一个日期。您还可以通过定义一些常量来粗略计算两个日期之间的距离:

const MILLISECOND_PER_SECOND:int = 1000;
const SECOND_PER_MINUTES:int = 60;
const MINUTES_PER_HOUR:int = 60;
const HOURS_PER_DAY:int = 24;
// ... etc ...

var differenceInSeconds:Number = differenceInMilliseconds / MILLISECOND_PER_SECOND;
var differenceInMinutes:Number = differenceInSeconds / SECOND_PER_MINUTES;
var differenceInHouse:Number = differenceInMinutes / MINUTES_PER_HOUR;
var differenceInDays:Number = differenceInHouse / HOURS_PER_DAY;

一旦你达到了天的水平,你可能会遇到问题,因为1小时的变化可以使它看起来像一整天已经过去了,而实际上并没有。经过几天,几周或几个月,你遇到闰年的问题。

e3bfsja2

e3bfsja22#

假设您的字符串处理代码正确地为您提供了有效的日期对象,只需使用ObjectUtil.dateCompare函数比较两个日期:
http://livedocs.adobe.com/flex/3/langref/mx/utils/ObjectUtil.html#dateCompare%28%29

if( ObjectUtil.dateCompare(date1, date2) == 1 ){}

我非常肯定ASDocs中定义的返回类型是错误的。
如果a为null或在b之前,它实际上返回-1;如果B为空或之前,则为1。

xhv8bpkk

xhv8bpkk3#

如果您已经有两个日期作为Date对象,只需比较它们。例如a.getTime() > b.getTime()
如果它们是字符串,请查看默认的Date.parse()函数是否接受它们的格式。如果不接受,您可能需要做其他工作。
让我们先看看你的价值观,好吗?

yuvru6vn

yuvru6vn4#

private function differenceBetweenDates(date1:Date, date2:Date):Number{
    var MS_PER_DAY:uint = 1000 * 60 * 60 * 24;
    var tempDate:Date = new Date(date2.time - date1.time);
        var difference:Number = 
        Math.abs(Math.round((tempDate.time / MS_PER_DAY)));
    return difference;
}
uklbhaso

uklbhaso5#

我已经实现了比较日期成功使用以下代码:

//here i have to compare two dates ,these are startdate and enddate.

// gets millisecs counts from 1970 midnight till sellected start date
var Starttimecounts : Number = popJobWin.DFStartDate.selectedDate.time; 

// gets millisecs counts from 1970 midnight till sellected end date
var Endtimecounts : Number = popJobWin.DFEndDate.selectedDate.time ;

if (Starttimecounts > Endtimecounts)
{
    Alert.show('end date should not lesser than start date..wrong!');   
    //replace your logic here                       
}
else
{
    Alert.show('correct!');
    //replace your logic here                       
}

相关问题