IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> даты, разница между двумя датами
сообщение
Сообщение #1


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


Существуют две даты. Необходимо учитывая высокосные года найти разницу (в днях).
Идей нет. В ЧаВо ничего не нашел.

Заранее благодарен.


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гость






Идей совсем нет? Ну, тогда попробуй найти номер дня в текущем году для каждой даты (это было в FAQ-е), и количество високосных лет между заданными годами. Дальше догадаешься?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


Цитата(volvo @ 20.02.2007 13:10) *

Идей совсем нет?

В Фаранове написано так
Цитата

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

Вот я и подумал может действительно есть более изящный способ...


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Профи
****

Группа: Пользователи
Сообщений: 705
Пол: Мужской

Репутация: -  20  +


Цитата(compiler @ 20.02.2007 15:07) *

Вот я и подумал может действительно есть более изящный способ...

Было уже:
Класс календаря.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


Malice
Цитата(Malice @ 20.02.2007 15:15) *

Было уже: Класс календаря.

ты имееш ввиду эту функцию
function days (y,m,d:integer):longint;
begin
if m<3 then begin dec (y); inc (m,12); end;
days:=round(int (y*365.25)+int ((m+1)*30.601)+d-int(y/100)+int (y/400));
end;

А не могла бы ты ее обьяснить...

volvo
Цитата(volvo @ 20.02.2007 15:16) *

FPC + DateUtils = более изящно... Просто в одну строку...

а по подробней... (может ссылочка есть или так расскажеш)

Сообщение отредактировано: compiler -


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Профи
****

Группа: Пользователи
Сообщений: 705
Пол: Мужской

Репутация: -  20  +


Цитата(compiler @ 20.02.2007 17:32) *

ты имееш ввиду эту функцию
А не могла бы ты ее обьяснить...

А чего объяснять, работает и слава богу smile.gif
Примерно так:
*365.25 раз в 4 года из 0.25 накопится 1-ца и получится 366..
-int(y/100) - если год делится на 100 убрали ту накопившуюся 1-цу
+int (y/400) - упс, вернули обратно..
+int ((m+1)*30.601) - тоже что-то копится и округляется в нужный момент.
+d - тупо прибавили дни..
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


Цитата(Malice @ 20.02.2007 17:02) *

А чего объяснять, работает и слава богу smile.gif

как в анекдоте про программера, сына, и солнце...
Цитата(Malice @ 20.02.2007 17:02) *

+int ((m+1)*30.601) - тоже что-то копится и округляется в нужный момент.- а что?



--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Профи
****

Группа: Пользователи
Сообщений: 705
Пол: Мужской

Репутация: -  20  +


Цитата(compiler @ 20.02.2007 18:08) *

а что ?

Количество дней в месяце m вестимо..
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


Цитата(Malice @ 20.02.2007 17:11) *

Количество дней в месяце m вестимо..

как то не нравится мне всё это... да еще и округление...


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Профи
****

Группа: Пользователи
Сообщений: 705
Пол: Мужской

Репутация: -  20  +


Цитата(compiler @ 20.02.2007 18:13) *

как то не нравится мне всё это... да еще и округление...

А вам шашечки или ехать ? В принципе, не нравится - сделай как фаронов сказал. Хотя и это работает нормально, куда уж изящнее..
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


Цитата(Malice @ 20.02.2007 17:20) *

Хотя и это работает нормально, куда уж изящнее..

наверняка есть колизии ведь тут применяется округление...


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
compiler   даты   20.02.2007 17:58
volvo   Идей совсем нет? Ну, тогда попробуй найти номер дн…   20.02.2007 18:10
compiler   Идей совсем нет? В Фаранове написано так Вот я …   20.02.2007 19:07
Malice   Вот я и подумал может действительно есть более из…   20.02.2007 20:15
compiler   [b]Malice [quote name='Malice' post='92276' date='…   20.02.2007 21:32
Malice   ты имееш ввиду эту функцию А не могла бы ты ее об…   20.02.2007 22:02
compiler   А чего объяснять, работает и слава богу :) как в…   20.02.2007 22:08
Malice   а что ? Количество дней в месяце m вестимо..   20.02.2007 22:11
compiler   Количество дней в месяце m вестимо.. как то не н…   20.02.2007 22:13
Malice   как то не нравится мне всё это... да еще и округл…   20.02.2007 22:20
compiler   Хотя и это работает нормально, куда уж изящнее.. …   20.02.2007 22:26
volvo   а по подробней... (может ссылочка есть или так рас…   21.02.2007 1:41
volvo   FPC + DateUtils = более изящно... Просто в одну ст…   20.02.2007 20:16
arximed   pomoqite reshit' ili nayti alqoritm zadachi na…   24.02.2007 18:19
volvo   Вот тут есть все функции, необходимые для решения:…   24.02.2007 18:23


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.03.2024 8:13
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name