http://objectlabkit.sourceforge.net/
-----Original Message-----
From: [EMAIL PROTECTED] on behalf of Stöhr Miroslav RNDr. Ph.D.
Sent: Wed 25.7.2007 11:30
To: Java
Subject: RE: Zjisteni pracovnich dnu mezi 2 dny
No, osobne jsem to uz nekolikrát (asi 2x :-)) resil, a místo db jsem pouzil
jako zdroj svátku ResourceBundle -- a bylo to automaticky i s resením pro jiné
locale. Nastavení se pak delo v textovém souboru, coz zvládala i prumerná
sekretárka, a fungovalo to.
Ovsem v prípade, ze uz podobná tabulka existuje a nekdo ji obhospodaruje aby
zustávala aktuální je resení s prístupem do db lepsí.
Jiná otázka je, ze podpora pro podobné kalendárové výpocty v jave je porád
nízká, vetsina z nás musí opakovane resit stále tytéz problémy. Divím se ze do
JDK uz dávno nedali nejaké CalendarUtils ... nemáte tusení proc? Problémy s
jiným nez gregoriánským kalendárem? Nebo to uz existuje a jenom o tom nevím?
Nebo na ne nikdo neapeluje?
Mirek
________________________________
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Ing. Jan Novotný
Sent: Wednesday, July 25, 2007 9:17 AM
To: Java
Subject: Re: Zjisteni pracovnich dnu mezi 2 dny
Je to takové nehezké resení (kéz by Java mela pro toto nejakou podporu), ale co
jsem se zatím setkal (celkem asi 3 prípady v mé praxi) - vzdycky se to resilo
takto. Typicky uz mel nás zákazník podobnou tabulku uz pripravenou pro jiné
aplikace, takze jsme se jen napojili na existující data.
Výhodou tohoto resení navíc je, ze si zákazník obhospodaruje dny volna sám, a
kdyz vyhlásí celozávodku není nic jednodussího nez pridat pár záznamu do
podobné tabulky. Má to pod kontrolou a vsechny jeho interní aplikace (pokud z
této tabulky cerpají - jako ze na tom zákazník vzdy trval) se novému nastavení
jednoduse prizpusobí.
Honza N.
25.7.07, "Ing. Radek Zuja" <[EMAIL PROTECTED]>:
Asi se mnou nebude spousta lidí souhlasit ale úplne nejjednodussí je mít
(pokud tedy jde o aplikaci s prístupem k databázi)
mít nekde tabulku datumu rekneme takovéto struktury
datum datetime (PK)
den tinyint (1-31)
tyden tinyint (0-53)
mesic tinyint (1-12)
den_v_tydnu tinyint (1-7)
svatek tinyint (1 -Ano, 0- ne)
A pokud nekdo potrebuje treba jeste dekády, kvartály apod.
Na plnení této tabulky si napsat proceduru, která to vygeneruje treba na
10 let dopredu, Mít treba pomocnou tabulku svátku, kterou ta procedura
ci trigger vezme v potaz.
A pak to muzete do aplikace zji?stovat jednoduchými selecty. V palikaci
pak nemusíte resit jestli je den_v tydnu 1 nedele, nebo pondelí. Jediné
místo (a to opravdu jedinné), kde to budete resit je ona plnicí
procedura(trigger)
Ta tabulka v DB moc místa nezabere, a funguuje to podle me nejlépe.
Radek Zuja
PS: ty datové typy tinyint jsou se sybase. Je to jení nejmensí datový
typ. Jde v podstate o Byte.
> Zdravim,
> kouknul jsme se do googlu a nasel jsem tam jedno reseni v .NET.
> Myslim, ze bych sel touto cestou. Sice to nebude nic zariveho, ale asi
> to bude jistota. Uvedu zde onen kod:
>
> ***************
> CREATE function swsAdmin.fn_WorkingDays
> (
> @FromDate datetime,
> @ToDate datetime
> )
> RETURNS int
> with encryption
> as
> begin
> if(@FromDate > @ToDate)
> return 0
>
> Declare @WorkingDays int
> Set @WorkingDays = 0
>
> while(@FromDate <= @ToDate)
> begin
> -- do not count SA & SU
> if((((@@datefirst + datepart(weekday, @FromDate) - 2) %
> 7) + 1) < 6)
> begin
> Set @WorkingDays = @WorkingDays + 1
> end
>
> -- add one day
> Set @FromDate = @FromDate + 1
> end
>
> return @WorkingDays
> end
> ************
>
> Osobne bych jeste pridelal funkci, ktera by na argument typu Date(nebo
> Calendar ... dle gusta) vracela, zda je pracovni ci ne. A nekde asi
> udrzovat tabulku svatku ....
>
>
>
> Lukas Barton napsal(a):
>> Ladislav Starý napsal(a):
>>> Zdravim,
>>>
>>> nez zacnu vymyslet nejaky algoritmus, chtel bych se zeptat, jestli
>>> se da nejakym elegantnim zpusobem zjistit pocet pracovnich dnu mezi
>>> dvema kalendarnimi dny.
>>> Pocet kalendarnich dnu jsem dokazal zjistit pomoci rozdilu
>>> milisekund, ale jak to udelat s kalendarnimi dny, to me zatim
nenapada.
>>>
>>> Zatim jsem uvazoval, ze bych postupne prochazel vsechny kalendarni
>>> dny v tom intervalu a testoval, jestli je pracovni nebo ne.
>>> Prijde mi ale hodne pomaly. Navic jeste budu muset resit statni
svatky.
>> Zjistit pocet pondeli-patku jde jeste vzoreckem.
>> A pak musite mit nekde databazi svatbku a odecist, to co lezi mezi.
>> Protoze pocet svatku se meni v case (napr. velikonoce, pridavaji se
>> svatky nove, ....).
>>
>> Lukas
>>
>>
>>
>>
>
--
--------------------------------------------------------------
Ing. Jan Novotný
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
http://blog.novoj.net
Myslenky dne otce Fura
--------------------------------------------------------------