如何使用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);
}
我得到错误:错误:令牌流的意外结束
答案 0 :(得分:5)
AS3不支持Python之类的时间delta类,所以这实际上有点棘手。比较日期时有很多事情需要担心:
最简单的方法就是使用日期对象的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小时的变化可能会让它看起来好像已经过了一整天了。经过几天,几周或几个月,你会遇到闰年问题。
答案 1 :(得分:4)
假设您的字符串处理代码正确地为您提供了有效的日期对象,只需使用ObjectUtil.dateCompare函数来比较2个日期:
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。
答案 2 :(得分:0)
如果您有两个日期作为Date
个对象,请进行比较。例如a.getTime() > b.getTime()
。
如果它们是字符串,请参阅默认Date.parse()
函数可接受的格式。如果没有,您可能还有其他工作要做。
让我们先看看你的价值观,不是吗?
答案 3 :(得分:0)
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;
}
答案 4 :(得分:0)
我已使用以下代码成功比较日期:
//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
}