Страница 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 нет

Код: Выделить всё

int compareTo(Date otherDate) 
это конечно интересный вопрос, но при ее отсутствии можно сравнивать миллисукунды.
if (date1.getMilliseconds() < date2.getMilliseconds())

Re: Возможно ли сравнение дат?

Добавлено: 14 янв 2007, 05:34
Timofey
Absurd, я не понял, что это за код. Что он даёт?
Сравнивать миллисекунды мне не надо, мне надо сравнивать только даты, поэтому я обнулил всё время в переменных:
dat1.setHours(0); dat1.setMinutes(0); dat1.setSeconds(0); dat1.setMilliseconds(0);