Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как сравнить две даты? 
:(
    Опции темы
Reptor
Дата 20.12.2004, 16:18 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Как в JavaScript сравнить 2 строковые даты. (нельзя что б первая была больше второй)

Например 10.10.2004 и 01.02.2005

(может можна как то через обект Date который бы проверял на коректность даты)
  Вверх
GoodBoy
Дата 20.12.2004, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Главный джедай
****


Профиль
Группа: Модератор
Сообщений: 3886
Регистрация: 8.1.2003
Где: КМВ

Репутация: 2
Всего: 83



Я бы сравнил числа YYYY1MM1DD1 и YYYY2MM2DD2... Т. е. для твоего случая 20041010 и 20050201.


--------------------
Чем дальше в лес, тем толще партизаны...

Цитата(igorold @  1.5.2016,  17:40 Найти цитируемый пост)
Индейцы не обратили внимания на поток беженцев из Европы… Теперь они живут в резервациях. 
PM MAIL   Вверх
Guest
Дата 20.12.2004, 17:09 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











А как преобразовать строку 10.10.2004 в число 20041010?
  Вверх
sergejzr
Дата 20.12.2004, 20:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 10
Всего: 360



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

Код

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



--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Sardar
Дата 20.12.2004, 20:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Пожалуй извратимся, хотя мне кажется можно проще 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 твой метод сравниает таймстампы до секунд,а не даты.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
sergejzr
Дата 20.12.2004, 20:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 10
Всего: 360



Вообще, если формат "жёсткий" и обьектов 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 Может всё равно пригодится?


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Sardar
Дата 20.12.2004, 21:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Елки не заметил что про строки речь шла...
Код
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));

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


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
sergejzr
Дата 21.12.2004, 18:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 10
Всего: 360



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


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0680 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.