|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Aleksey Tarasow 2:5053/51.4 01 Oct 2002 18:31:18 To : All Subject : Юлианскаю дата. --------------------------------------------------------------------------------
Тут как-то я задал вопрос как можно найти разницу между двумя датами, и день
недели по дате. Пришло ряд ответов. Особенно спасибо Сергею Бычкову (надеюсь
правильно прочитал :) на основе присланых им исходников я получил следующее.
(см. в конце). Hо считает не правильно, вернее наполовину правильно. Проверял их
для 2001 года и выяснил что для мая, июля, октября, декабря и марта 2002
юлианкая дата считается на 1 больше чем нужно. Для следующих месяцев все
исправляется. Скорее всего это происходит из-за того что перед ними стоят месяца
по 30 дней. Кто нибудь может помочь решить эту проблему?
=== ачало data.lib ===
{Библиотека работы с датами}
function jd(day,mon,year:integer):integer;
{Функция расчета юлианской даты, переработаной.
Так же смотри ZX-РЕВЮ 1993 год страница 203,
и файл jd.txt
Hа входе: day - число
mon - месяц
year - год}
const
yearoffs=2000;
var
deyoffs:integer;
begin
if mon<3 then begin
year:=year-1;
mon:=mon+12;
end; {if}
deyoffs:=trunc(yearoffs/4-yearoffs/100+yearoffs/400);
jd:=trunc(365*(year-yearoffs)+year/4-year/100+
year/400+31*mon-((2*mon-4)/5)+day-deyoffs);
end; {jd}
function dayofweek(jd:integer):integer;
{Функция определений дня недели по юлианской дате.
Подробнее смотри ZX-РЕВЮ 1993 страница 203.
Hа входе: jd - юлианская дата.
Hа выходе: 0 - воскресенье
...- .....
6 - суббота}
var
d:integer;
begin
d:=(jd+1) mod 7;
if d<0 then dayofweek:=d+7
else dayofweek:=d;
end; {dayofweek}
=== Конец data.lib ===
С уважением, Алексей.
--- ifmail v.2.15
* Origin: Сила - последний аргумент тупиц. (2:5053/51.4)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/146773d99fa7d.html, оценка из 5, голосов 10
|