Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Определение текущего дня недели, с идентификацией выходных и праздников 
V
    Опции темы
Entry_N3
  Дата 17.8.2007, 11:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 446
Регистрация: 8.2.2007

Репутация: нет
Всего: нет



Есть задача: выполнять определенные действия в будни. 

Подробнее: по расписанию код смотрит текущий день недели, и если это не выходной и не праздничный день, то выполняет определенные действия.

Как реализовать просмотр текущего дня недели с таким условием? (Может, кто-то реализовывал подобное, или есть идеи?)

Добавлено через 7 минут и 49 секунд
Я думаю, праздничные дни можно как-то хранить в xml.

Какой формат предложите? Как его обрабатывать?
PM MAIL   Вверх
AlexeyVorotnikov
Дата 17.8.2007, 12:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 658
Регистрация: 18.6.2007
Где: Москва

Репутация: 10
Всего: 18



Код

Calendar.getInstance().get(Calendar.DAY_OF_WEEK)

выдаст текущий день недели. И можешь делать с ним всё, что хочешь. smile


Цитата(Entry_N3 @  17.8.2007,  12:49 Найти цитируемый пост)
Какой формат предложите? Как его обрабатывать? 

Какой тебе будет удобнее.


--------------------
RTFM!
Три источника и три составные части Java: The Java Language Specification, Java Platform API Specification, The Java Virtual Machine Specification
PM MAIL   Вверх
_Michael
Дата 17.8.2007, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 375
Регистрация: 23.6.2007
Где: з полонини

Репутация: 2
Всего: 6



В файле хранить в виде 25.06 13.08 14.11 только праздничные дни, поскольку узнать суббота ето или воскресенье, т-е какой день недели, можно срадствами Date или Calendar. И хранить ети дни как одну строку в файле. Парсить можно СтрингТокенайзером, а потом проверять есть ли етот день праздником или нет. ИМХО smile


--------------------
...не убивайся ни о чем - все временно,
хоть ночь темна но светлым днем беременна...

Саади
PM MAIL   Вверх
_Michael
Дата 17.8.2007, 12:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 375
Регистрация: 23.6.2007
Где: з полонини

Репутация: 2
Всего: 6



Только что пришла одна идея.
Можно хранить в файле в двоичном представлении, побайтово так сказать, условитсья например что первый байт ето число месяца, а второй байт ето месяц, третий опять число месяца, четвертый опять месяц. И файл небольшой получится, и читать можно сразу же, не играясь с различными парсерами для ХML или токенайзерами дял строк. smile

Это сообщение отредактировал(а) _Michael - 17.8.2007, 12:17


--------------------
...не убивайся ни о чем - все временно,
хоть ночь темна но светлым днем беременна...

Саади
PM MAIL   Вверх
Entry_N3
Дата 17.8.2007, 12:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 446
Регистрация: 8.2.2007

Репутация: нет
Всего: нет



Здорово. Вроде, все прояснилось. Спасибо.  smile 

Если будут еще идеи, то жду...
PM MAIL   Вверх
_Michael
Дата 17.8.2007, 12:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 375
Регистрация: 23.6.2007
Где: з полонини

Репутация: 2
Всего: 6



 smile Можно еще в базе данных хранить smile


--------------------
...не убивайся ни о чем - все временно,
хоть ночь темна но светлым днем беременна...

Саади
PM MAIL   Вверх
Entry_N3
Дата 17.8.2007, 12:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 446
Регистрация: 8.2.2007

Репутация: нет
Всего: нет



А кто-н. заводил уже список праздничных дней, а то я сейчас на yandex.ru серфингую?
PM MAIL   Вверх
_Michael
Дата 17.8.2007, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 375
Регистрация: 23.6.2007
Где: з полонини

Репутация: 2
Всего: 6



 smile ето уже не такая большая проблема я думаю smile


--------------------
...не убивайся ни о чем - все временно,
хоть ночь темна но светлым днем беременна...

Саади
PM MAIL   Вверх
AntonSaburov
Дата 17.8.2007, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 51
Всего: 118



Цитата(Entry_N3 @  17.8.2007,  12:45 Найти цитируемый пост)
А кто-н. заводил уже список праздничных дней

Во-первых - по-моему, проще всего хранить обычный тесктовый файл. Его и править просто и не вызывает сложностей при загрузке - не так уж много у нас праздников.

Во-вторых - в каждой стране свои праздники.

В-третьих = есть праздники, которые отмечаются не по числам, а по дням недели - тот же день флота в России - последнее воскресенье июля. Или еще что.

Поэтому возможно надо будет сделать более сложный формат - сначала указыватеся абсолютная дата или относительная, а потом уже сама дата - либо в виде даты, либо в виде чего-то относительного.

В принципе XML может в таком случае быть удобным. Во-первых тогда просто организовать список для нескольких стран, да и разница между абсолютными и относительными

Опять же повторюсь - не так уж много праздников даже если описать несколько стран.
PM MAIL WWW ICQ   Вверх
nornad
Дата 17.8.2007, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1079
Регистрация: 16.2.2007
Где: в Караганде

Репутация: 16
Всего: 31



Кроме того ещё надо учесть, что некоторые праздники в некоторых странах делают субботу/воскресенье будничными.
В целом же надо иметь список статичных праздников, список динамичных праздников ("третья суббота февраля в високосный год"). И для каждого из них иметь пометку, делает ли он буднями предыдущие/последующие выходные.
В итоге получаем нетривиальную задачу, не имеющую общего решения (разные страны, разные решения правительства в разные годы о том, какие выходные рядом с праздником будут буднями и в каком количестве и много чего ещё). Поэтому решать надо частную задачу.


--------------------
Три достоинства программиста: Леность, Нетерпение и Гордость
Ларри Уолл
PM MAIL WWW ICQ Skype MSN   Вверх
Entry_N3
  Дата 17.8.2007, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 446
Регистрация: 8.2.2007

Репутация: нет
Всего: нет



 smile  
PM MAIL   Вверх
LSD
Дата 17.8.2007, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Рекомендую посмотреть в сторону Quartz (чтобы не писать свой велосипед).


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Entry_N3
  Дата 20.8.2007, 12:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 446
Регистрация: 8.2.2007

Репутация: нет
Всего: нет



Есть дата в формате dd.mm.yyyy hh:mi:ss.
Как получить день недели?
PM MAIL   Вверх
Maksym
Дата 20.8.2007, 12:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


.
***


Профиль
Группа: Участник Клуба
Сообщений: 1456
Регистрация: 19.8.2005
Где: Odessa, Black Sea

Репутация: 14
Всего: 62



Код

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;


public class DayOfTheWeek {

    public static void main(String[] args) throws ParseException {
        String dateStr = "20.08.2007 12:14:30";
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd.MM.yyyy hh:mm:ss"); 
        Date date = simpleDateFormat.parse(dateStr);
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        System.out.println(calendar.get(Calendar.DAY_OF_WEEK));
    }

}


Добавлено @ 12:18
Entry_N3
Не забудь, что первый день недели - это воскресенье.

Это сообщение отредактировал(а) Maksym - 20.8.2007, 12:29
PM MAIL   Вверх
Entry_N3
Дата 20.8.2007, 12:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 446
Регистрация: 8.2.2007

Репутация: нет
Всего: нет



Maksym,  smile 

А как получить текущую дату? 
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0892 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.