Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Как сравнить две даты?


Автор: Reptor 20.12.2004, 16:18
Как в JavaScript сравнить 2 строковые даты. (нельзя что б первая была больше второй)

Например 10.10.2004 и 01.02.2005

(может можна как то через обект Date который бы проверял на коректность даты)

Автор: GoodBoy 20.12.2004, 16:44
Я бы сравнил числа YYYY1MM1DD1 и YYYY2MM2DD2... Т. е. для твоего случая 20041010 и 20050201.

Автор: Guest 20.12.2004, 17:09
А как преобразовать строку 10.10.2004 в число 20041010?

Автор: sergejzr 20.12.2004, 20:35
Обьект Date имеет функцию date.getTime();
Она возвращает число, которое можно сравнивать.

Код

if(date1.getTime()>date2.getTime())
{
alert ("дата1 больше даты2");
}

Автор: Sardar 20.12.2004, 20:49
Пожалуй извратимся, хотя мне кажется можно проще smile
Код
var d1=new Date(); //текущая дата
var d2=new Date();
d2.setMonth(5); //отнесём её к июню

function toYYYYMMDD(d) {
 var r=["getYear","getMonth","getDate"], j=0;
 var adj=[0,1,0]; //для месяца нужна коррекция, т.к. считает от 0-11
 for(var i=0; i<r.length; i++)
    j+=(d[r[i]]()+adj[i])*Math.pow(100, 2-i);
 return j;
}

d1=toYYYYMMDD(d1);
d2=toYYYYMMDD(d2);
alert(d1>d2);


P.S. елки опздал smile , sergej.z твой метод сравниает таймстампы до секунд,а не даты.

Автор: sergejzr 20.12.2004, 20:56
Вообще, если формат "жёсткий" и обьектов Date во фреймворке нет, я сравниваю так:

Код

function convert(data)
{
return data.substr(6,4)+data.substr(3,2)+data.substr(0,2);
}

alert(convert('10.10.2004')>convert('01.02.2004'));

Добавлено @ 21:00
Цитата(Sardar @ 20.12.2004, 19:49)
sergej.z твой метод сравниает таймстампы до секунд,а не даты.

Точно smile я стормозил smile Может всё равно пригодится?

Автор: Sardar 20.12.2004, 21:03
Елки не заметил что про строки речь шла...
Код
var d="10.12.2004";

function toYYYYMMDD(d) {
var r=d.split(".");
return r[0]*1+r[1]*100+r[2]*10000;
}
alert(toYYYYMMDD(d));

Как и в примере выше сравниваем.

Автор: sergejzr 21.12.2004, 18:30
Я разделил тему. Продолжение здесь:
http://forum.vingrad.ru/index.php?showtopic=37785

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)