Страница 1 из 2
Возможно ли сравнение дат?
Добавлено: 06 янв 2007, 17:12
Timofey
Возможно ли сравнение дат без преобразования в число или строку?
Re: Возможно ли сравнение дат?
Добавлено: 07 янв 2007, 09:07
Timofey
Опять отвечаю на свой же вопрос: ДА, возможно.
Как только разобрался с вопросом в топике выше, так всё у меня и заработало.
Re: Возможно ли сравнение дат?
Добавлено: 07 янв 2007, 16:25
Duncon
Люди, а слабо книжки читать?..
Re: Возможно ли сравнение дат?
Добавлено: 08 янв 2007, 10:35
Timofey
Может подскажешь хорошую ?!?!
Перед тем как спросить, конечно же я перечитал в книжке "операторы сравнения", где чёрным по белому были описаны операторы, примеры и цитата: "Участвовать в сравнении могут числа, строки, логические значения, массивы, объекты.", про даты ничего. А теперь я, начинающий программист в JScript, должен срастить, что дата - это объект...
И что же он не написал, что объекты знаком равенства уравниваются, над чем я проламал голову несколько часов и пришёл к этому "глупому" вопросу?
Кстати книжка эта: "Самоучитель по созданию Web-страниц" А.Ю.Гаевский, В.А. Романовский, "А.С.К." 2002 г. Киев.
Re: Возможно ли сравнение дат?
Добавлено: 08 янв 2007, 12:49
Duncon
http://c-books.info/books/load.php?ty=j
Date конечно объект, но методы объекта (типа getDate()) возвращяют значения ввиде чисел и строковом формате..(getDate возвращяет число...)
И собственно зачем конвертация при таких раскладах?..
Re: Возможно ли сравнение дат?
Добавлено: 09 янв 2007, 14:20
Timofey
Спасибо за ссылочку. Посмотрю. Извини за резкие высказывания.
Я бы и рад обойтись без конвертации, но у меня опять вопрос появился по поводу дат-объектов:
почему (zaezd==dat1) равняется FALSE,
а (zaezd.getTime()==dat1.getTime()) равняется TRUE?
Где может быть подвох? Где моё упущение, чтобы потом на нём не споткнуться?
Предыстория переменных, если это важно:
var zaezd = new Array(new Date(2007,0,9),new Da............);
dat1 = new Date();
dat1.setHours(0); dat1.setMinutes(0); dat1.setSeconds(0); dat1.setMilliseconds(0);
а потом менял у dat1 только дни и месяцы.
Re: Возможно ли сравнение дат?
Добавлено: 09 янв 2007, 19:22
Duncon
А что за индекс i ? Приведи код так не понятно..
Re: Возможно ли сравнение дат?
Добавлено: 10 янв 2007, 14:13
Timofey
Код: Выделить всё
var zaezd = new Array(new Date(2007,0,14),new Date(2007,4,28),new Date(2007,2,11),...КАКИЕ ХОЧЕШЬ ДАТЫ...);
function kalendar() {
mes = new Array("Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь");
mes_naz= new Array();
mes_ned= new Array();
kolmes = 0; kolned = -1;
dat = new Date();
dat1 = new Date();
dat.setHours(0); dat.setMinutes(0); dat.setSeconds(0); dat.setMilliseconds(0);
dat1.setHours(0); dat1.setMinutes(0); dat1.setSeconds(0); dat1.setMilliseconds(0);
dat1.setDate(dat1.getDate() - dat.getDate() + 1);
day = dat1.getDay();
if (day == 0) day = 7
tab_1 = new Array();
tab_2 = new Array();
for (var indR=0; indR<30; indR++){
tab_1[indR] = new Array();
tab_2[indR] = new Array();
for (var indC=0; indC<7; indC++){
if (day > 1){
day = day - 1;
tab_1[indR][indC] = "";}
else{
tab_1[indR][indC] = dat1.getDate();
tab_2[indR][indC] = 0;
if (dat1<dat) tab_2[indR][indC] = 1
else{ if (dat1.getDay()==0 || dat1.getDay()==6) tab_2[indR][indC] = 2
for (i=0; i<zaezd.length; i++){
if (zaezd[i].getTime()==dat1.getTime()){tab_2[indR][indC] += 3; break;} *******************ЗАГВОЗДКА***
}
}
dat1.setDate(dat1.getDate()+1);
if (dat1.getDate()==1){
mes_naz[kolmes]=mes[dat1.getMonth()-1];
mes_ned[kolmes]=indR-kolned;
kolmes++;
kolned=indR+1;
day=15; if (dat1.getDay()==1) day=8}
}
}
}}
Экспериментальный прототип:
http://www.vladtravel.ru/Scripts.htm
Как видишь я добился своего, но почему в этой строке мне пришлось поступить так, а не проще?
Re: Возможно ли сравнение дат?
Добавлено: 11 янв 2007, 18:34
Absurd
Почему в Javascript-овской Date нет
это конечно интересный вопрос, но при ее отсутствии можно сравнивать миллисукунды.
if (date1.getMilliseconds() < date2.getMilliseconds())
Re: Возможно ли сравнение дат?
Добавлено: 14 янв 2007, 05:34
Timofey
Absurd, я не понял, что это за код. Что он даёт?
Сравнивать миллисекунды мне не надо, мне надо сравнивать только даты, поэтому я обнулил всё время в переменных:
dat1.setHours(0); dat1.setMinutes(0); dat1.setSeconds(0); dat1.setMilliseconds(0);