Возможно ли сравнение дат?
Модератор: Duncon
Люди, а слабо книжки читать?..
- Timofey
- Сообщения: 32
- Зарегистрирован: 28 апр 2006, 11:42
- Откуда: Владивосток
- Контактная информация:
Может подскажешь хорошую ?!?!
Перед тем как спросить, конечно же я перечитал в книжке "операторы сравнения", где чёрным по белому были описаны операторы, примеры и цитата: "Участвовать в сравнении могут числа, строки, логические значения, массивы, объекты.", про даты ничего. А теперь я, начинающий программист в JScript, должен срастить, что дата - это объект...
И что же он не написал, что объекты знаком равенства уравниваются, над чем я проламал голову несколько часов и пришёл к этому "глупому" вопросу?
Кстати книжка эта: "Самоучитель по созданию Web-страниц" А.Ю.Гаевский, В.А. Романовский, "А.С.К." 2002 г. Киев.
Перед тем как спросить, конечно же я перечитал в книжке "операторы сравнения", где чёрным по белому были описаны операторы, примеры и цитата: "Участвовать в сравнении могут числа, строки, логические значения, массивы, объекты.", про даты ничего. А теперь я, начинающий программист в JScript, должен срастить, что дата - это объект...
И что же он не написал, что объекты знаком равенства уравниваются, над чем я проламал голову несколько часов и пришёл к этому "глупому" вопросу?
Кстати книжка эта: "Самоучитель по созданию Web-страниц" А.Ю.Гаевский, В.А. Романовский, "А.С.К." 2002 г. Киев.
http://c-books.info/books/load.php?ty=j
Date конечно объект, но методы объекта (типа getDate()) возвращяют значения ввиде чисел и строковом формате..(getDate возвращяет число...)
И собственно зачем конвертация при таких раскладах?..
Date конечно объект, но методы объекта (типа getDate()) возвращяют значения ввиде чисел и строковом формате..(getDate возвращяет число...)
И собственно зачем конвертация при таких раскладах?..
- Timofey
- Сообщения: 32
- Зарегистрирован: 28 апр 2006, 11:42
- Откуда: Владивосток
- Контактная информация:
Спасибо за ссылочку. Посмотрю. Извини за резкие высказывания.
Я бы и рад обойтись без конвертации, но у меня опять вопрос появился по поводу дат-объектов:
почему (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 только дни и месяцы.
Я бы и рад обойтись без конвертации, но у меня опять вопрос появился по поводу дат-объектов:
почему (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 только дни и месяцы.
А что за индекс i ? Приведи код так не понятно..
- Timofey
- Сообщения: 32
- Зарегистрирован: 28 апр 2006, 11:42
- Откуда: Владивосток
- Контактная информация:
Код: Выделить всё
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}
}
}
}}
Как видишь я добился своего, но почему в этой строке мне пришлось поступить так, а не проще?
-
- Сообщения: 1228
- Зарегистрирован: 26 фев 2004, 13:24
- Откуда: Pietari, Venäjä
- Контактная информация:
Почему в Javascript-овской Date нет
это конечно интересный вопрос, но при ее отсутствии можно сравнивать миллисукунды.
if (date1.getMilliseconds() < date2.getMilliseconds())
Код: Выделить всё
int compareTo(Date otherDate)
if (date1.getMilliseconds() < date2.getMilliseconds())
2B OR NOT(2B) = FF
- Timofey
- Сообщения: 32
- Зарегистрирован: 28 апр 2006, 11:42
- Откуда: Владивосток
- Контактная информация:
Absurd, я не понял, что это за код. Что он даёт?
Сравнивать миллисекунды мне не надо, мне надо сравнивать только даты, поэтому я обнулил всё время в переменных:
dat1.setHours(0); dat1.setMinutes(0); dat1.setSeconds(0); dat1.setMilliseconds(0);
Сравнивать миллисекунды мне не надо, мне надо сравнивать только даты, поэтому я обнулил всё время в переменных:
dat1.setHours(0); dat1.setMinutes(0); dat1.setSeconds(0); dat1.setMilliseconds(0);