Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Как сравнить даты? (http://www.flasher.ru/forum/showthread.php?t=103017)

Волгоградец 27.10.2007 16:41

Как сравнить даты?
 
Привет. Подскажите подалуйста, как во флэше можно сравнить даты. Например в текстовое окно вводим 27.10.2007 - и если эта дата меньше определенной, то выполняется одно действие, если больше - другое. Думаю должно быть что-то такое:
Код:

function sravn (){
  if (a >= b) {
    trace ("один")
  } else {
    trace ("два")
  }
}

Где a - дата, которую мы водим
b - дата, с которой надо сравнить.

Kikasso 27.10.2007 17:23

Смотрим в хелпе Date.
Вам надо перегнать дату в стандартный формат ( getTime() ) и сравнить две цифры.

screamge 27.10.2007 17:44

только 27.10.2007 всегда будет больше чем 26.11.2007

Kikasso 27.10.2007 17:49

Цитата:

Сообщение от screamge
только 27.10.2007 всегда будет больше чем 26.11.2007

с чего бы это?
Код:


var d1:Date = new Date( 2007, 10, 27 );
var d2:Date = new Date( 2007, 11, 26 );
trace( d1.getTime() > d2.getTime() );

Осталось отпарсить данные в текстовом поле, определить год, месяц и день.
Берем строку, split по разделителю..
Код:

var str = '2007,11,26';
trace( makeDate( str ) );

function makeDate( s:String ):Date{
        var arr:Array = s.split(',');
        return new Date( Number( arr[0] ), Number( arr[1] ), Number( arr[2] ) );
}


screamge 27.10.2007 18:00

Я вообще-то ответ на сообщение автора написал :).

Kikasso 27.10.2007 18:08

Цитата:

Сообщение от screamge
Я вообще-то ответ на сообщение автора написал :).

упс. сорри ))
Ну делов-то: цифры переставить.
Код:

return new Date( Number( arr[2] ), Number( arr[1] ), Number( arr[0] ) );

Волгоградец 27.10.2007 18:15

Цитата:

только 27.10.2007 всегда будет больше чем 26.11.2007
Почему? 26.11.2007 вернет в милисекундах больше чем 27.10.2007. Или я что-то не догоняю?

screamge 27.10.2007 18:22

getTime сработает правильно, а вот ваш код из первого поста — нет. О чём собственно я и написал.

Код:

var one:Date = new Date (27,10,2007);
var two:Date =  new Date (26, 11, 2007);

if (one > two){
        trace ('trace');
}


Волгоградец 27.10.2007 18:30

Хм... Странно... Почему-то метод getTime() возвращает отрицательные результаты.
screamge и Kikasso, спасибо большое!

Kikasso 27.10.2007 18:34

Цитата:

Сообщение от Волгоградец
Хм... Странно... Почему-то метод getTime() возвращает отрицательные результаты.

для дат раньше чем 1970 год. Определитесь с форматом ввода.


Часовой пояс GMT +4, время: 06:26.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.