2010-06-22 7 views
2

как сравнивать значения 2 дат с использованием ActionScript я выполнил этот код в моей программе ..сравнения двух дат

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

Hi suchithra, эта ошибка из-за исходный файл, независимо от того, это MXML или файл ActionScript, содержит недопустимые символы. Кавычки «после» недействительны. Вместо этого используйте ASCII. – nil

ответ

0

Если у вас имеют две даты как Date объекты уже, просто сравните их. например a.getTime() > b.getTime().

Если они являются строками, см. Их формат, допускается по умолчанию Date.parse(). Если нет, у вас может быть другая работа.

Давайте сначала посмотрим ваши ценности, не так ли?

+0

Я выполнил этот код в своей программе. var time1: Date = new Date (Number (fromDate.substr (0,4)), Number (fromDate.substring (5,7)) - 1, Number (fromDate.подстрока (8,10))); \t \t \t \t var time2: Date = new Date (Number (toDate.substr (0,4)), Number (toDate.substring (5,7)) - 1, Number (toDate.substring (8,10))); \t \t \t \t, если (time1.getTime()> time2.getTime()) { \t \t \t \t \t Alert.show (time1 +»после» + time2); \t \t \t \t} im get error: Ошибка: Неожиданный конец потока токенов. – user371882

+0

Эта ошибка возникает из-за вашего исходного файла, вне зависимости от его MXML или файла ActionScript, имеет недопустимые символы. Кавычки «после» недействительны. – nil

5

AS3 не поддерживает временный дельта-класс, такой как Python, поэтому это может быть немного сложным. Есть много вещей, чтобы беспокоиться о том, когда сравнении дат:

  • летнего времени (когда часы изменить один час в некоторых странах весны и осенью)
  • временных зон
  • високосных лет

Самый грубый способ сделать вещи - это просто использовать свойство объекта 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 часов может сделать это, кажется как полный день прошел, когда это действительно не так. После нескольких дней и недель или месяцев вы сталкиваетесь с проблемами високосного года.

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 ошибочны.

Он будет фактически возвращать -1, если a равно null или до b; 1, если b равно null или раньше.

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; 
} 
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      
} 
Смежные вопросы