Так ответит ли мне кто-нибудь почему мне пришлось применить метод getTime() в операторе if (ЗАГВОЗДКА показана в коде выше) ?
Чем отличаются объекты, если не годами, месяцами, днями, часами, минутами, секундами, миллисекундами?
То что один массив, а другой нет? Но это же смешно!
Возможно ли сравнение дат?
Модератор: Duncon
Ю.Лукач (Справочник веб-разработчика) ответил давным давно:Timofey писал(а):Так ответит ли мне кто-нибудь почему мне пришлось применить метод getTime() в операторе if (ЗАГВОЗДКА показана в коде выше) ?
Чем отличаются объекты, если не годами, месяцами, днями, часами, минутами, секундами, миллисекундами?
То что один массив, а другой нет? Но это же смешно!
Объект Date предназначен для манипуляций с датами и временами. Его примитивным значением является число, равное количеству миллисекунд относительно базового времени, равного полуночи 1 января 1970 г. по Гринвичскому меридиану (UTC, Universal Coordinated Time). Если это значение равно NaN, то оно считается неопределенным.
День состоит из 86400000 миллисекунд. Диапазон значений Date от -100000000 дней до 100000000 дней относительно базового времени, что приблизительно равно 285616 лет в каждую сторону отсчета.
...
Метод getTime возвращает примитивное значение объекта дата. Этот метод полезен для копирования значения одного объекта Date в другой. Пример:
var d1 = new Date("May 21, 1958");
var d2 = new Date();
d2.SetTime(d1.GetTime()); // теперь значения этих объектов равны
Метод valueOf
Синтаксис: дата.valueOf()
Результат: числовое значение
Метод valueOf возвращает примитивное значение объекта дата. Иными словами, этот метод возвращает тот же результат, что и метод getTime.
Дальше я:
В JavaScript есть шесть типов данных: Undefined (неопределенный), Null (нулевой), Boolean (логический), String (строковый), Number (числовый) и Object (объектный).
Как видишь, типа данных Дата нет. Так что же ты сравниваешь?
Ты сравниваешь два объекта, т.е. дескрипторы или, в терминологии C++, указатели на объекты. Указатель или дескриптор - это адрес в памяти, начиная с которого в ней хранится объект.
Да и по сути объектно-ориентированного программирования проверять на равенство объекты - нонсенс. Представь, что проверяешь равна ли Памела Андерсон Клаве Шиффер - какой в этом смысл?
Сравнивать можно СВОЙСТВА объектов, например высота Клавки больше высоты Памелы, а диаметр Памелы больше диаметра Клавы.
if(pamella.height < klaudia.height)
Свойства объектов часто инкапсулированы (скрыты от посторонних глаз) и для их получения или изменения нужно использовать МЕТОДЫ этих объектов, которые возвращают соответствующие свойства или присваивают переданное значение этим свойствам. Такие методы часто начинаются с get и set
т.е. хочешь проверить даты на равенство, используй что-то типа того:
var a = date1.valueOf(); // или GetTime()
var b = date2.valueOf(); // или GetTime()
if(a == b)
...
Это имел ввиду Absurd, советоваший насчет миллисекунд - сравнивать количества миллисекунд относительно базового времени, равного полуночи 1 января 1970 г., но он по ошибке написал не ту функцию.
- Timofey
- Сообщения: 32
- Зарегистрирован: 28 апр 2006, 11:42
- Откуда: Владивосток
- Контактная информация:
В общем понятно, но...
Я не выкладывал полностью код, но его можно посмотреть в ссылке: http://www.vladtravel.ru/Scripts.htm в одной из функций я использовал знаки не равенства (<=, >=) и они работали с теми же объектами, при том все их части: < и =, > и =. А здесь не хочет... И какое же свойство этому мешает?..
В общем, поживём - увидим. Вопрос закрыт.
Я не выкладывал полностью код, но его можно посмотреть в ссылке: http://www.vladtravel.ru/Scripts.htm в одной из функций я использовал знаки не равенства (<=, >=) и они работали с теми же объектами, при том все их части: < и =, > и =. А здесь не хочет... И какое же свойство этому мешает?..
В общем, поживём - увидим. Вопрос закрыт.