Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Алгоритм хранения даты, типа спецификации 
:(
    Опции темы
Gold Dragon
  Дата 16.10.2004, 21:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

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



Хочу создать что-то типа спецификации определённого дня,Не нашёл ничего подходящего.

Поясню.

Должно получиться полное описание определённого дня. Это может быть праздник, годовщина, событие и т.п.

Вот что уже получилось (в скобках размер)

[1]- категория (1 - постоянный, 2 - переходящий)
[2]- день
[2]- месяц
[4]- год
[2]- вид (1 - праздник, 2 - годовщина рождение, 3 - памятный день, 4 - годовщина смерти и так далее)
[2]- продолжительность
[3]- страна (код страны, где это началось)
- название
- описание

Если событие переходящее, например, какой-то праздник отмечается во второй четверг сентября c 1750 года, то "день" делится на две части и запись будет примерно такая (224091750...)

У кого какие соображения по этому поводу? Что ещё нужно предусмотреть может кто уже это делал?





--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
dm9
Дата 18.10.2004, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дмитрий Копытин
****


Профиль
Группа: Vingrad developer
Сообщений: 3876
Регистрация: 22.7.2002
Где: Москва

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



Не совсем разобрался, что значит 224091750, но, кажется, ты не предусматриваешь периодичность. "Каждый второй вторник", "Третее воскресенье каждого месяца". Последнее, кстати, вполне рельно встречается. Не далее как вчера был на сборище, проходящем каждое третее воскресенье месяца. :)

Хотя, если у тебя спецификация дня... хз, но если ты пишешь что-то типа универсального календаря, может пригодиться.
PM MAIL ICQ   Вверх
Akina
Дата 18.10.2004, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


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

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



Первый понедельник после первого вторника... в рамках приведенной схемы это не программится...

Имхо категория должна быть не такая простая, а предусматривать все возможные типы преходящих праздников.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
maxim1000
Дата 18.10.2004, 16:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



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


--------------------
qqq
PM WWW   Вверх
dm9
Дата 18.10.2004, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дмитрий Копытин
****


Профиль
Группа: Vingrad developer
Сообщений: 3876
Регистрация: 22.7.2002
Где: Москва

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



В общем, придётся разрабатывать язык для описания дат :)

И для не имеющих ничего общего с программированием - возможность заполнения поля какими-то наиболее распространёнными способами простым тыканьем мышки :)
PM MAIL ICQ   Вверх
maxim1000
Дата 18.10.2004, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Visual Date ++ :D
где-то я слышал, что есть стандартный компонент Microsoft для обработки скриптов, точнее не скажу...


--------------------
qqq
PM WWW   Вверх
dm9
Дата 18.10.2004, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дмитрий Копытин
****


Профиль
Группа: Vingrad developer
Сообщений: 3876
Регистрация: 22.7.2002
Где: Москва

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



Цитата(maxim1000 @ 18.10.2004, 17:54)
где-то я слышал, что есть стандартный компонент Microsoft для обработки скриптов


А что он делает? Там, наверное, стандартный язык. Хотя, добавить подпрограммок - и можно его использовать :)
Я также знаю интерпретатор для Delphi :)
Кстати, а на чём реализация задумывается?

[offtop]
Ну вот, а Red Dragon хотел написать простенький календарик на сто строк :D :D :D
[/offtop]

Это сообщение отредактировал(а) dm9 - 18.10.2004, 17:06
PM MAIL ICQ   Вверх
Gold Dragon
Дата 18.10.2004, 19:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

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



Спасибо за комментарии :) и по порядку

Цитата(dm9 @ 18.10.2004, 15:36)
Не совсем разобрался, что значит 224091750,

2 - событие переходящее
2 - второй
4 - четверг
09 - сентября
1750 - событие введено в 1750 году

Цитата(dm9 @ 18.10.2004, 15:36)
ты не предусматриваешь периодичность. "Каждый второй вторник"

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

Цитата(Akina @ 18.10.2004, 17:26)
Первый понедельник после первого вторника
Это будет второй понедельник :D

Цитата(dm9 @ 18.10.2004, 17:47)
В общем, придётся разрабатывать язык для описания дат
Идея интересная только что-то трудно найти этому применение.

Какие ещё соображения, пока писать не начал




--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
dm9
Дата 18.10.2004, 19:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дмитрий Копытин
****


Профиль
Группа: Vingrad developer
Сообщений: 3876
Регистрация: 22.7.2002
Где: Москва

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



Цитата(Red @ 18.10.2004, 20:22)
Это будет второй понедельник


Не правда :)

1-ПН
2-ВТ
3-СР
4-ЧТ
5-ПТ
6-СБ
7-ВС
8-ПН <-- второй понедельник
9-ВТ

1-ВТ
2-СР
3-ЧТ
4-ПТ
5-СБ
6-ВС
7-ПН <-- первый понедельник
8-ВТ

Цитата(Red @ 18.10.2004, 20:22)
Это мне и не надо. Я делаю не органайзер, а что-то типа календаря и по этому - одно и тоже событие может быть только один раз в год


Ну так зачем тогда вообще события вводить, если про третее воскресенье месяца мне не напомнят? :)
Добавлено @ 19:45
А хотя, если это просто общий календарь... То есть если это будет использоваться, например, так: вывести на сайте, какие сегодня праздники. То тогда все события описываются твоим способом из первого сообщения.
PM MAIL ICQ   Вверх
Gold Dragon
Дата 19.10.2004, 10:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

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



Цитата(dm9 @ 18.10.2004, 20:42)
Это будет второй понедельник

Не правда
:( Не подумал

Цитата(dm9 @ 18.10.2004, 20:42)
А хотя, если это просто общий календарь...
Именно. Только идея сделать ооочень большой справочник по событиям в России (СССР, Русь...) с дальнейшим расширением территорий. Задумка старая, материал немного набрал, осталось реализовать. Конечно можно через базы, но хочется описать событие формулой

Цитата(dm9 @ 18.10.2004, 20:42)
То тогда все события описываются твоим способом из первого сообщения.
Вот и спрашиваю, что я ещё забыл. А то сейчас начну прогить, потом переделывать не хотца.


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
Akina
Дата 19.10.2004, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


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

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



Red Dragon
Я воспроизвел тебе алгоритм даты выборов президента США. Без указания месяца есссно.

Имхо вводим типы дат. Для постоянных все просто и ясно - сккажем тип "ноль" и конкретная дата, а вот для преходящих - тип и дата от которой обрабатывать...

Скажем приведенный мной пример трансформируется в следующее - первый понедельник после 2 числа месяца включительно. И хранится тип такого преходящего праздника (какой-нить 125-й) и базовая дата для данного типа (2 число какого-то месяца)...

В рамках такого подхода описываются почти все существующие преходящие даты, за исключением связанных с лунным календарем (Пасха там, Новый год по Хиджре и пр.) - для них тоже есть базовая дата (после коей искать первое новолуние скажем), но расчет куда как не проще...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Gold Dragon
Дата 19.10.2004, 13:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

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



Цитата(Akina @ 19.10.2004, 14:25)
а вот для преходящих - тип и дата от которой обрабатывать...
Если честно встречал прздники только типа вторая субота месяца, а вот чтобы такие обороты: "первый понедельник после первого вторника" - извращение какое-то.

Цитата(Akina @ 19.10.2004, 14:25)
за исключением связанных с лунным календарем (Пасха там, Новый год по Хиджре и пр.)
Кстати, а как вот это гадство учитывать?


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
Akina
Дата 19.10.2004, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


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

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



Red Dragon
Цитата
как вот это гадство учитывать?
А в чем проблема? все необходимые алгоритмы и таблицы запросто находятся в Инете, программить тут - на полчаса...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Mad
Дата 19.10.2004, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Эксперт
Сообщений: 656
Регистрация: 18.10.2004
Где: Одесса

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



Red DragonСделай на классах:
Код

class CMyDate // Это базовый класс
{
   virtual time_t GetNextDate(time_t PrevDate); // Получение следующей даты
};

class CMondey : public CMyDate // Класс понедельников :)
{
   virtual time_t GetNextDate(time_t PrevDate);
};

.
.
.



Таким образом описываеш все возможные переобичности.



--------------------
user posted image
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


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

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


 




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


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

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