|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
23.09.2009, 12:38 | #21 |
Павел Сергеевич
Форумчанин
Регистрация: 05.11.2006
Сообщений: 665
|
Объясню на пальцах...
Переводим дату в дни - отбрасываем знаки после запятой. Вот теперь у Вас есть количество дней с 31 декабря 1889г. Что теперь? У Вас есть конструктивные предложения?! Про такое говорят "Слышу звон, да не знаю где он." Я же предлагаю за минимум расчетов получить разницу календарей в днях и просто уменьшить/увеличить количество дней в исходной дате, обработав 3(!) исключительных случая на каждые 400 лет. И я даже знаю, как это работает! P.S. А за ваш пост вам можно дать нарушение по 2 пунктам: 1.) флуд - т.к. это обычные прерии, не несущие раскрытия темы ни коим образом 2.) нарушение правил форума - т.к. ссылки в данном разделе запрещены. (за это и выдал)
Познавая других, мы познаем себя.
С'est la vie... |
23.09.2009, 12:59 | #22 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
Ну SuperVisor, мне кажется как раз таки Ваш метод весьма мутным, чего уж тут говорить о топикстартере . Насчет дней: тут я считаю все правильным, ему понадобиться 2 функции: перевод с юлианского в дни и с дней в грегорианский.
Как переводить в грегорианский? Да практически также как предлагаете Вы - число дней в году практически фиксировано, нужно будет только делать коррекцию на високосные года по указанным выше правилам. Такой вариант более универсален, поскольку не содержит исключительных случаев. Единственное ограничение - точкой отсчета будет являться наша эра и дата за ней не будут доступны. Удобство такого подхода в том, что если ему потом потребуется перевод в календарь мая, то писать нужно будет только одну функцию .
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика Последний раз редактировалось Utkin; 23.09.2009 в 13:11. |
23.09.2009, 13:16 | #23 | |
Павел Сергеевич
Форумчанин
Регистрация: 05.11.2006
Сообщений: 665
|
Цитата:
По поводу остального: через пол-часика вложу код с подробными камментами... "Мутный" - есть "не понятный", но не все что не понятно - не верно либо хуже. ))
Познавая других, мы познаем себя.
С'est la vie... |
|
25.09.2009, 01:28 | #24 |
Пользователь
Регистрация: 21.09.2009
Сообщений: 31
|
А разницу в днях, на сколько я понимаю можно осуществлять по формуле d=((y/100)-(y/400))-2??
А ведь кто-то хотел даже код написать... Последний раз редактировалось Stilet; 25.09.2009 в 08:07. |
25.09.2009, 08:38 | #25 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
ну, я тоже хочу код написать...
почти всё готово, но есть одна мелкая загвоздочка... как только её преодолею, считайте готовый код уже в кармане! загвоздка вот в чём. я набросал функцию (не сам, воспользовался чужими наработками, в частности, кодом (c) T. R. Willmitch) которая определяет разность в днях между Юлианской и Григорианскими датами. вот эта функция: Код:
|
25.09.2009, 11:54 | #26 |
Павел Сергеевич
Форумчанин
Регистрация: 05.11.2006
Сообщений: 665
|
Извиняюсь за задержку. Работа, дом... Откровенно - на код потратил часа 2. От Datetime отказался. Если нужны будут 5 тысяч с лишним лет, добавите сами...
This is universal CODE: Код:
Познавая других, мы познаем себя.
С'est la vie... Последний раз редактировалось SuperVisor; 25.09.2009 в 13:07. |
25.09.2009, 12:57 | #27 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
SuperVisor, проверил Ваше решение (практически во всём диапозе вообразимых дат от 1 г.н.э. до 10000 г.н.э.)
Всё работает! |
25.09.2009, 13:31 | #28 |
Павел Сергеевич
Форумчанин
Регистрация: 05.11.2006
Сообщений: 665
|
Serge_Bliznykov, оно еще и в оба направления работает и с разными эрами.. )
Для удобоваримости перевода еще некоторые нюансы Вам в помощь: Код:
Познавая других, мы познаем себя.
С'est la vie... |
25.09.2009, 13:50 | #29 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Код:
I'm learning to live...
|
|
25.09.2009, 14:01 | #30 |
Павел Сергеевич
Форумчанин
Регистрация: 05.11.2006
Сообщений: 665
|
Виталий, тут просто на C++ надо, а какие в нем возможности я, к сожалению, не знаю.. Потому так.
В Delphi LongMonthNames[] берется из системных параметров.. Ну я на всякий случай и описал.. )))
Познавая других, мы познаем себя.
С'est la vie... |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Задачка по С++ | Ready | Помощь студентам | 2 | 20.05.2009 01:19 |
задачка | lucky | Помощь студентам | 1 | 07.05.2009 13:49 |
Задачка на С!!! | Exorcist | Помощь студентам | 1 | 07.12.2008 21:15 |
Задачка | Claster | Помощь студентам | 2 | 24.09.2008 17:53 |