Форум: "Потрепаться";
Текущий архив: 2002.03.14;
Скачать: [xml.tar.bz2];
Внизстаж Найти похожие ветки
← →
VictorT (2002-01-30 13:25) [0]Народ, кто скажет, как правильно посчитать стаж работы? Есть такие данные: дата прихода на роботу, сегодняшняя дата, предыдущий стаж (до прихода на эту работу). Стаж в виде N лет N месяцев N дней. Если не влом, киньте на мыло.
← →
Anatoly Podgoretsky (2002-01-31 00:34) [1]Ну если скажешь сколько дней в месяце и сколько в году.
← →
VictorT (2002-01-31 10:20) [2]>Ну если скажешь сколько дней в месяце и сколько в году.
Собственно, в этом вся проблема, а не в реализации. Я, по сути, хотел, чтобы мне сказали формулу для расчёта. Думаю, что количество дней в месяце должно как-то зависеть от дат, по которым считается стаж, а не приниматься, например за 30. Извиняюсь, за сумбурность изложения.
← →
fliz (2002-01-31 13:40) [3]извините, но я не понял, в чем конкретно то проблема?
кол-во дней в месяце (за исключенем февраля) по моему не зависит ни от чего
(и уж тем более от дат, по которым считается стаж)
уже 2000 лет.
← →
limon (2002-01-31 15:06) [4]проблема, похоже, в том, что тяжело пересчитать дату с юлианского на григорианский или на лунный китайский календари (если на работу китайца приняли) ;)
← →
VictorT (2002-01-31 15:06) [5]Попробую обьяснить проблему на примере. Есть время начала какого-то процесса (нач_час:нач_мин), и окончания (кон_час:кон_мин), надо найти сколько длился процес (час:мин). Расчёт может быть такой:
расчёт длительности в минутах - 60*(кон_час-нач_час)+кон_мин-нач_мин,
расчёт часов - целая часть от деления дл. в мин. на 60,
расчёт минут - остаток деления дл. в мин. на 60.
А как будет для дат?
← →
Кулюкин Олег (2002-01-31 15:46) [6]Когда занимался кадрами, то использовал для такого вычисление процедурку DateDiff из RxLib.
procedure DateDiff(Date1, Date2: TDateTime; var Days, Months, Years: Word);
var
DtSwap: TDateTime;
Day1, Day2, Month1, Month2, Year1, Year2: Word;
begin
if Date1 > Date2 then begin
DtSwap := Date1;
Date1 := Date2;
Date2 := DtSwap;
end;
DecodeDate(Date1, Year1, Month1, Day1);
DecodeDate(Date2, Year2, Month2, Day2);
Years := Year2 - Year1;
Months := 0;
Days := 0;
if Month2 < Month1 then begin
Inc(Months, 12);
Dec(Years);
end;
Inc(Months, Month2 - Month1);
if Day2 < Day1 then begin
Inc(Days, DaysPerMonth(Year1, Month1));
if Months = 0 then begin
Dec(Years);
Months := 11;
end
else Dec(Months);
end;
Inc(Days, Day2 - Day1);
end;
← →
Dimka Maslov (2002-01-31 16:33) [7]Я ещё в школе написал для такую программу для собеса, правда она под DOS и исходники к ней потеряны.
← →
VictorT (2002-01-31 16:59) [8]2 Кулюкин Олег
Спасибо, компилить ещё не пробовал, но если не откомпилится - неважно, главное что идею понял. Кстати, DaysPerMonth - стандартная функция Делфей? И опять вопрос: а как прибавить два стажа (до прихода на роботу и на этой работе (посчитаный выше)).
Тут ведь уже нет привязки к датам, наверное придётся принимать количество дней в месяце за 30?
← →
Кулюкин Олег (2002-01-31 17:40) [9]2 VictorT
> - стандартная функция Делфей
Нет она из RxLib, я же пишу
"использовал для такого вычисление процедурку DateDiff из RxLib"
:)
> а как прибавить два стажа
Это лучше у кадровика спросить.
Вечером у жены спрошу, она 3 года в кадрах отработала.
В RxLib в юните DateUtil еще много полезных функций для работа с датами.
← →
VictorT (2002-01-31 17:48) [10]КО>Вечером у жены спрошу, она 3 года в кадрах отработала.
Спроси, если не влом, буду премного благодарен, потому что у своих кадровиков выяснить не могу, не знают сами как что считают :(
← →
Кулюкин Олег (2002-02-01 09:35) [11]В МВД при сложении стажей считали месяц за 30 дней.
Остальное считали как DateDiff из RxLib :)
← →
VictorT (2002-02-01 09:54) [12]2 Кулюкин Олег
Спасибочки, очень помог.
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2002.03.14;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.005 c