Obliczenia na datach

0

Witam !

Poszukuję kogoś biegłego w następującym temacie : wyliczenie stażu pracy w przypadku zachowania jej ciągłości. W tym przypadku nie można stosować metody polegającej na obliczeniu różnicy (w dniach) pomiędzy datami od/do i następnym wyliczeniu lat (365 dni) oraz miesięcy (30 dni). Próbowałem różnych sposobów, a wyniki porównywałem z wynikami uzyskanymi z dwóch "uznanych" programów kadrowo-płacowych. Ja do tej pory nie udało mi się opracować żadnego sensownego algorytmu, który zapewniał identyczne wyniki ! Zawsze przy pewnej kombinacji dat występował jakiś wyjątek ! Będę wdzięczny za każdą pomoc. Jeśli ktoś miałby jakiegoś "gotowca" i zechciał się nim podzielić to byłoby super !

Pozdrawiam
JW

0

Nie to forum :)

0

Odejmujesz roki, a potem uwzględniasz miesiące w latach skrajnych.
Potem piszesz: 7 lat i 3 miechy.

A jeśli ma być co do dnia, no to liczysz jeszcze dni ze skrajnych miechów - przenosisz dni i wypełniasz pierwszy, a to co zostanie w ostatnim wywalasz na ekran.

7 lat, 3 miechy i 30 dni (w lutym :-D ).

0

plik dateutils.pas

czy jakos tak
DaysBetween

YearsbETWEEEN

WeeksBetween to jedne z funkcji ktore zwracaja niektore rzaeczy

0
zuzia napisał(a)

Odejmujesz roki, a potem uwzględniasz miesiące w latach skrajnych.
Potem piszesz: 7 lat i 3 miechy.

A jeśli ma być co do dnia, no to liczysz jeszcze dni ze skrajnych miechów - przenosisz dni i wypełniasz pierwszy, a to co zostanie w ostatnim wywalasz na ekran.

7 lat, 3 miechy i 30 dni (w lutym :-D ).

Witam !

Nie można troszkę jaśniej ? 8-O Najlepiej na przykładzie (jeśli nie masz nic przeciwko temu) :

  1. 2000-10-15 ... 2000-09-24
  2. 2000-02-28 ... 2009-04-30

Jeden dobry przykład jest więcej wart niż książka teorii ! Mnie już "ręce i majtki" opadają !

Pozdrawiam
JW

0

Poprawka !

Ten pierwszy przykład to miało być 2000-10-15 ... 2004_09_24

0
  1. 2000-10-15 ... 2004-09-24
    -wybierasz date poźniejsza (2004-09-24)
    -odejmujesz od roku późniejszego wcześniejszy 2004-2000 = 4 lata
    -porównujesz daty miesięcy (jeśli numer miesiąca wzesniejszej daty jest większy, niż późniejszej odejmujesz jeden rok)
    10 > 9 => rok minus 1 (3 lata)
    -obliczanie ile miesięcy minęło :
    12 - 10 = 2 (ile miesięcy brakowało do nowego roku)
    2 + 9 = 11 (od nowego roku minęło 9 miesiecy więc właśnie tyle dodajemy)

ostatecznie otrzymujemy wynik 3 lat i 11 miesiecy :) Pozostaje jeszcze dodanie zliczania dni ( dni = 30 (lub 31) - data dzienna mniejszej daty, miesiace = miesiace - 1, dni = dni + data dzienna drugiej daty), i uwzględnienie lat przystępnych i lutego :P

//pisane bez większego zastanowienia mogą wystąpić jakieś błędy logiczne :P

0

Czy to naprawde nieruzinkowy temat? Odejmowanie dat?

0
othello napisał(a)

Czy to naprawde nieruzinkowy temat? Odejmowanie dat?

No, a nie?
Wymaga tak interdyscyplinarnej wiedzy, że nawet Rysio z Klanu wymięka.

0

Temat jest trochę nietuzinkowy, wymaga bowiem znajomości (i zrozumienia) jakichś tam przepisów. Jeżeli staż liczy się w latach i miesiacach, to trzeba być przygotowanym na to, że osoba pracująca (w roku nieprzestępnym) od 1 lutego do 28 lutego ma miesiąc stażu, a osoba pracująca dłuzej, od 1 marca do 30 marca nie ma jeszcze miesiaca stażu. Trzeba też wiedzieć jak traktować pracę na poł (trzy czwarte) etatu.

0
Rezor napisał(a)

ostatecznie otrzymujemy wynik 3 lat i 11 miesiecy :) Pozostaje jeszcze dodanie zliczania dni ( dni = 30 (lub 31) - data dzienna mniejszej daty, miesiace = miesiace - 1, dni = dni + data dzienna drugiej daty), i uwzględnienie lat przystępnych i lutego :P

//pisane bez większego zastanowienia mogą wystąpić jakieś błędy logiczne :P

Witam !

I "tu jest pies pogrzebany" ! O ile wyliczenie lat i miesięcy jest proste to z dniami "nie ma lekko".
W programach, o których wspominałem wcześniej dla :
2000-10-15 ... 2004-09-24 uzyskujemy wynik 03/11/10
2001-05-28 ... 2009-04-30 uzyskujemy wynik 07/11/04

Są to programy, które zostały już pozytywnie zweryfikowane przez rynek (nawet bardzo) i nie ma
powodów ażeby powyższe wyniki uznać za błędne.

Pozdrawiam
JW

P.S.
Wyliczanie stażu pracy (prawidłowe) jest podstawą dobrze napisanego programu kadrowo-płacowego i dlatego można dyskutować nad jego "nietuzinkowością "

0
bogdans napisał(a)

Temat jest trochę nietuzinkowy, wymaga bowiem znajomości (i zrozumienia) jakichś tam przepisów

No to należałoby zacząć od tych przepisów, to nie jest raczej problem informatyczny ani programistyczny... bardziej pasuje do offtopic i pytanie jak sie oblicza staż pracy

1 użytkowników online, w tym zalogowanych: 0, gości: 1