Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 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
7-43204
3d
2001-12-08 23:01
2002.03.14
Мышь


1-43104
greenrul
2002-02-27 18:44
2002.03.14
Как обработать событие закрытия программы?


3-42909
ProgMan
2002-02-13 09:10
2002.03.14
SQL-сервер под Linux


1-43110
DDDeN
2002-02-27 10:39
2002.03.14
Меню из ресурса


3-42922
Roman Tutov
2002-02-14 10:34
2002.03.14
Перенос строки из DBGreed в String Greed





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский