![]() |
|
Модераторы: Poseidon |
![]()
|
|
| Atum |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 265 Регистрация: 3.10.2008 Репутация: нет Всего: нет |
Добрый день !
предлагаю всем пользователям отвлечься и порешать такую вот интересную задачу : имеется две Даты ( типа java.util.Date) сегодня и какая то другая тестовая дата требуется отнести эту тестовую дату в одну из групп : Давно, В прошлом Месяце, В этом месяце ,на прошлой неделе, на этой неделе , вчера, сегодня, завтра, на следующей неделе, В Следующем месяце, Нескоро . и того 11 групп . пользоваться можно только типом дата и его методами ( Calendar использовать нельзя , если только настенный Пример определения дня :
Нескоро :
для тех кто решит задачу есть , как в школе подпункты (сложность) : 1) требуется учитывать - переход через особую точку - это Новый год 2) требуется учитывать первую неделю в году - что считать первой неделей года 3) требуется учитывать - что в разных странах неделя начинается по разному с Понедельника или Воскресенья 4) требуется учитывать что есть переход на летнее и зимнее время тому кто придумает самый красивый алгоритм - приз для тех кому сложно работать с датами - по 11 группам : попробуйте для начала распределить по Кварталам и по Декадам |
||||
|
|||||
| fixxer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 672 Регистрация: 14.9.2006 Где: Саратов, Россия Репутация: нет Всего: 27 |
Почему нельзя пользоваться Calendar? Можно ж написать (скопипастить
-------------------- ![]() |
|||
|
||||
| ivanovpv |
|
|||
![]() Варвар ![]() ![]() Профиль Группа: Участник Сообщений: 639 Регистрация: 26.1.2005 Где: Москва Репутация: нет Всего: 28 |
Ну да по сути предлагается написать собственный календарь... Или по крайней мере классик обладающий 90% признаков календаря.
Какую тут ищет красоту автор - не понимаю. Класс описывающий календарь - ох он некрасив... Сам лично писал на С++ - а если писать путем то надо отсчитывать високосные дни в общем мраки Некое подобие красивости можно соблюсти на самой функции проверяющей признаки, ну типа
-------------------- Aut viam inveniam aut faciam |
|||
|
||||
| Ares4322 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 339 Регистрация: 25.9.2007 Где: Россия, Москва Репутация: нет Всего: 3 |
Ну это задача не глупая, но с нее обычно начинают изучать Java. Да и не только Java, наверное)
|
|||
|
||||
| Temdegon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 429 Регистрация: 11.10.2008 Где: Minsk Репутация: нет Всего: 9 |
Определяем сколько милисекунд в сутках.
потом вычитаем date1.getTime() - date2.getTime(), получаем разность дат в милисекундах. Знак результата покажет проешдая дата или будущая. Делим результат на кол-во милисек в сутках, и узнаем сколько дней разница между датами. |
|||
|
||||
| goodday1941 |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 709 Регистрация: 16.7.2006 Где: Украина, Киев Репутация: нет Всего: 9 |
у java.util.Date с геттеров только метод getTime() не deprecated на данным момент
тоесть в идеале юзать только его нужно, а Вы в ваших примерах используете deprecated методы, что не есть хорошо ну и далее с класса Date товарищи настоятельно советуют использовать календарь для такого рода задач) Добавлено через 1 минуту и 55 секунд
не согласен что с такого начинают )
и толку? сегодня понедельник вчера было воскресение ) разница один день а недели разные ;) -------------------- SCJP 6 |
||||
|
|||||
| Temdegon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 429 Регистрация: 11.10.2008 Где: Minsk Репутация: нет Всего: 9 |
да, действительно, лоханулся тогда надо искать алгоритм вычисления дня недели, типа такого |
|||
|
||||
| goodday1941 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 709 Регистрация: 16.7.2006 Где: Украина, Киев Репутация: нет Всего: 9 |
да неплохо если знать год месяц и день, а у нас в распоряжении только колличество милисикунд от первого января 1970 года )
-------------------- SCJP 6 |
|||
|
||||
| powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 1 Всего: 159 |
Для домашних заданий, курсовых, существует "Центр Помощи".
Тема перенесена! |
|||
|
||||
| Atum |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 265 Регистрация: 3.10.2008 Репутация: нет Всего: нет |
для тех кому не очень интересна такая задача - можете ее и не решать
я нашел два решения . которые меня порадовали. скажу сразу - ,как мне кажется , у такой задачи нет строгого математического алгоритма . и все решения это просто переборы и проверка условий. Решение date1.getTime() - date2.getTime() тоже имеет место быть , и если его довести до конца - то наверное будет красиво . для чего я разместил тут эту задачу: в детстве нас учили работать в числами и цифрами от 0 до 9 , потом в институте на сказали что есть другие системы исчисления с другим основанием и 1+1 = 10... тут я предлагаю поломать голову над тем как мыслить в терминах календаря проще всего сказать - что задача не имеет смысла и очень простая, но стоит начать ее решать и вы понимаете что не так все просто P.s. deprecated методы использовать можно. Это есть в условии . что я понимаю под красивым решением - это постараться уйти от обычного перебора , а использовать фантазию , например взять за основу - «Вечный» табель-календарь для определения дня недели любой календарной даты старого и нового стилей. и находить нужное решение без особых математических расчетов Это сообщение отредактировал(а) Atum - 23.10.2009, 23:05 |
|||
|
||||
![]()
|
| Правила форума "Центр помощи" | |
|
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Центр помощи | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |