Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.03.14;
Скачать: CL | DM;

Вниз

стаж   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.011 c
3-42957
KIR
2002-02-15 17:04
2002.03.14
Locate внутри SQL-Запроса


3-42984
Georg
2002-02-13 13:12
2002.03.14
Interbase


3-42913
Ross
2002-02-13 19:20
2002.03.14
Как правильно записать данные в таблицу


3-42956
Duce
2002-02-14 12:37
2002.03.14
Как красиво исполнить INSERT?


1-43045
Denis V
2002-02-25 14:20
2002.03.14
Как обрабатывать данные со сканера штрих кода ?