Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Koliko godina, mjeseci, dana u 6000 dana

[es] :: Access :: Koliko godina, mjeseci, dana u 6000 dana

[ Pregleda: 8332 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

brankec
Bosanski Brod

Član broj: 140157
Poruke: 161
*.teol.net.



Profil

icon Koliko godina, mjeseci, dana u 6000 dana14.07.2008. u 20:58 - pre 191 meseci
Imam sledeci problem: kako od ukupnog broja dana (recimo 6000 dana) izracunam koliko tu ima godina, mjeseci i dana pojedinacno. Broj godina nije problem, problem su mjeseci i dani kao ostatak (kako dobiti ostatak u access-u, odnosno da li ima neka funkcija).
 
Odgovor na temu

Scelle
Slavko Šćekić
Student, Računarski fakultet
Beograd

Član broj: 151761
Poruke: 174
194.106.175.*



Profil

icon Re: Koliko godina, mjeseci, dana u 6000 dana14.07.2008. u 22:05 - pre 191 meseci
Da bi to izracunao, moras racunati od nekog pocetnog datuma.
Evo sta sam ja iskopao iz funkcija koje sam mukotrpno sakupljao vremenom. :) Nije mojih ruku djelo, cini mi se da sam je uzeo bas sa ovog foruma.
Racuna razliku izmedju dva datuma u godinama, mesecima i danima. Namjena je racunanje starosti osobe, mislim...

Code:

Public Sub CalcAge(vDate1 As Date, vdate2 As Date, ByRef vYears As Integer,
ByRef vMonths As Integer, ByRef vDays As Integer)
' Comments : calculates the age in Years, Months and Days
' Parameters:
' vDate1 - D.O.B.
' vDate2 - Date to calculate age based on
' vYears - will hold the Years difference
' vMonths - will hold the Months difference
' vDays - will hold the Days difference
vMonths = DateDiff("m", vDate1, vdate2)
vDays = DateDiff("d", DateAdd("m", vMonths, vDate1), vdate2)
If vDays < 0 Then
' wierd way that DateDiff works, fix it here
vMonths = vMonths - 1
vDays = DateDiff("d", DateAdd("m", vMonths, vDate1), vdate2)
End If
vYears = vMonths \ 12 ' integer division
vMonths = vMonths Mod 12 ' only want leftover less than one year
End Sub


Pa ti provali kako radi... :)))))
"Takozvani praktični ljudi bili bi korisni i zasluživali bi svaku pohvalu i poštovanje kad od te svoje praktičnosti ne bi hteli da naprave smisao života i razlog svoga opstanka, opravdanje za podjarmljivanje i terorisanje svih onih koji su lišeni toga praktičnog smisla, ali zato stvoreni za druge, možda više i bolje podvige."

Ivo Andric
 
Odgovor na temu

Zidar
Canada

Moderator
Član broj: 15387
Poruke: 3085
*.100.46-69.q9.net.



+79 Profil

icon Re: Koliko godina, mjeseci, dana u 6000 dana15.07.2008. u 13:26 - pre 191 meseci
Ako ti je ulazni podatka broj dana, kao '6000' dana, onda ne moze da se da prcizan odgovor. 6000 dana je priblizno 98.63 godine, ako godina traje 365 dana. medjutim, svaka cetvrta godina traje 366 dana, pa se onda racunica komplikuje. Za neke proracune se usvaja da je godina 360.5 dana, mada je u stvari godina 360.25 (3*365 + 366)/4. Sve ovo vazi ako pretpostavis da prvi dan pada na pocetak godine i da je ta godina prosta. Znaci, ima mnogo pretpostavki i mogucnosti, koje sev daju malkice razlicitev rezultate.

Ako je pitanje tipa 'koliko godina, meseci, dana izmedju dva zadana datuma" onda se moze doci do tacnog odgovora i ne trebaju ti silne pretpostavke. Na forumu MS SQL neko je postavio identicno pitanje:
http://www.elitesecurity.org/t324310-razlika-datum-izrazena-mm-dd

Primer koji ti je Scelle dao je vazanm jer pokazuje kako se pravilno racuna s datumima. Starost nije samo Year(Date())- Year(DatumRodjenja) Mora se gledati da li DAte() (danasnji datum, datum na koji se zeli izracunati starost) pada pre ili posle rodjendana. Ovo znaci ako ti nas primer datediff u godinama vrati 14.3 godine, imas 14 godina a ono 0.3 treba da pretvoris u mesece i dane. Na slican nacin, datediff u mesecima moze da vrati 171.6 meseci (=14.3 godine) , sto zanci 171 mesec i jos 0.6 meseca. Ali od 171 mesec treba da oduzmes 14 x 12 = 168 meseci pa ti ostaje 3 m3seca. Dakle, 14.3 godine jeste 14 godina 3 meseca i 0,6 od poslednjeg meseca. Dtediff u danima za 14.3 godine jeste otprilike 5223 dana. E, ali imamo vec 14 godina i 3 meseca. Kolko je 0.6 meseci? Zavisi koji je mesec u pitanju. O.6 od Jula i 0.6 od Aprila nije isto. Takodje 0.6 od Februara sa 28 dana nije isto sto i 0.6 od Februara sa 29 dana, niti 0.6 od Decembra sa 31 dan. Sad se dakle vratis na pocetak, pa kazes otprilike ovako:

BrojGodina = datdiff(PocetniDatum, ZavrsniDatum, "year") (sintaksa je otprilike, tacnu ima su helpu)

DatumX = PocetniDatum + BrojGodina

BrojMeseci = datediff ( DatumX, ZavrsniDatum)

DatumY = DatumX + BrojMeseci

BrojDana = datediff (DatumY, ZavrsniDatum)

Otprilike tako nekako. Probaj, pa vidi.

 
Odgovor na temu

Getsbi

Moderator
Član broj: 124608
Poruke: 2828



+45 Profil

icon Re: Koliko godina, mjeseci, dana u 6000 dana15.07.2008. u 14:35 - pre 191 meseci
@ Zidar
Pokvario ti se digitron 6000/365=16,44 , a ne 98.63

Najnovijim merenjima utvrđeno je da godina traje nešto manje, odnosno 365.242 dana ili tačno 365 dana 5 sati, 48 minuta i 48 sekundi. Ovako je u Vojvodini. Možda je u Kanadi drugačije.

I dobro nam došao gde god da si bio.
Prikačeni fajlovi
 
Odgovor na temu

Zidar
Canada

Moderator
Član broj: 15387
Poruke: 3085
*.100.46-69.q9.net.



+79 Profil

icon Re: Koliko godina, mjeseci, dana u 6000 dana15.07.2008. u 15:16 - pre 191 meseci
Kineska roba, sta ces
Bar sam bio blizu sa Godina = 365.25
 
Odgovor na temu

brankec
Bosanski Brod

Član broj: 140157
Poruke: 161
*.teol.net.



Profil

icon Re: Koliko godina, mjeseci, dana u 6000 dana16.07.2008. u 22:28 - pre 191 meseci
Evo kako sam ja to resio:

Godina: [dan]\365,25
Mjesec: ([dan]-(365,25*([dan]\365,25)))\30,4375
Dana: Round([dan]-(365,25*([dan]\365,25))-((30,4375*[mjesec]));0)

IspravkaG: IIf([dana]<0 And [mjesec]=0;[godina]-1;[godina])
IspravkaM: IIf([dana]<0;IIf([mjesec]-1<0;11;[mjesec]-1);[mjesec])
IspravkaD: IIf([dana]<0;30+[dana];[dana])

U tabeli [dan] se nalazi ukupan broj dana.
Uzeo sam da godina ima 365,25 dana a mjesec 30,4375 dana (kada 365,25 podelim sa 12).
Ispravke sam radio zbog toga sto npr. dobijem 30 godina 10 mjeseci i -9 dana pa onda to moram preracunati.

Ovako kako sam ja uradio postoji odredjena greska u nekoliko dana (a i ne mora). Zanima me kako da izracunam maksimalnu gresku, odnosno maksimalan broj dana za koliko mogu pogresiti i koji su to slucajevi (dan, dva sigurno ali ne puno vise, koliko sam ja uspeo shvatiti). Ukupan broj dana je vezan za radni staz (znaci radnik moze imati maksimalno oko 15000 dana).

Nadam se da sam bio jasan. Pozdrav.
 
Odgovor na temu

Getsbi

Moderator
Član broj: 124608
Poruke: 2828



+45 Profil

icon Re: Koliko godina, mjeseci, dana u 6000 dana17.07.2008. u 05:08 - pre 191 meseci
@ brankec

Problem je što kalendar nije tako jednostavan upravo zbog broja dana u pojedinim mesecima i prestupnim godinama. Baratanjem bez nekog početnog datuma nećeš doći do dobrog rešenja.

Radni staž za koji kažeš da je pitanje vezano, ne obračunava se tako. U firmi se ne vodi broj dana koje je radnik proveo na poslu. Uvek postoji datum započinjanja i datum raskidanja radnog odnosa.

Broj dana i broj meseci u godini u kojoj je započet radni odnos sabiraju se sa brojem dana i brojem meseci u godini raskidanja radnog odnosa. Ukoliko broj punih meseci dostigne 12 prebacuje se u godine. Cele godine između se jednostavno zbrajaju.

Scelle je dao ispravan VBA kod. Ja sam ga samo primenio u primeru koji sam okačio u gornjem postu. Verujem da je forma "frmRacunanjeStarosti" idealna za problem radnog staža.

Moglo bi i drugačije, poštujući dosledno pravila računanja koja sam ovde naveo, ali verujem da bi VBA kod bio manje elegantan.

Što se tiče maksimalne greške, ovo nisu merenja (manje ili više precizna), da bi se bavio teorijom grešaka već egzaktno računanje.

Ako radniku budeš zakinuo i jedan dan, teško će te oprati maksimalna greška.


 
Odgovor na temu

brankec
Bosanski Brod

Član broj: 140157
Poruke: 161
*.teol.net.



Profil

icon Re: Koliko godina, mjeseci, dana u 6000 dana17.07.2008. u 06:43 - pre 191 meseci
Moj zadatak vezano za radni staz je bio da uporedim podatke izmedju dve sluzbe jer su tokom vremena nastale neke greske (kadrovska i licni dohodci). U kadrovskoj se vodi ukupan staz (koji je razvrstan u nekoliko kategorija: borac, beneficirani, staz u nasoj firmi, prethodni staz i jos dve podele) a u LD-u ukupan staz manje beneficirani i manje neplaceni (koji naravno i nije staz). U kadrovskoj za svaku kategoriju postoji posebna kolona za godinu, mjesec i dan osim staza u nasoj firmi koji se obracunava na osnovu datuma zaposlavanja. U LD-u se vodi samo ukupan staz (manje gore navedeni) u godinama, mjesecima i danima. Jedini nacin koji ja vidim je da to uradim je da pretvorim staz prvo u dane pa onda zavrsim na onaj nacin na koji sam uradio. Razlike u 3-4 dana nisam uzimao u obzir.
Ne znam nacin kako bih to mogao uraditi da dobijem u dan sve tacno, ali sa druge strane razlika od 3-4 dana nije u ovom slucaju toliko bitna pod uslovom da nije veca (a mislim da ne moze biti veca, mada nisam siguran pa sam zato postavio pitanje kolika je maksimalna greska koju mogu na ovaj nacin napraviti).
Pozdrav.
 
Odgovor na temu

Getsbi

Moderator
Član broj: 124608
Poruke: 2828



+45 Profil

icon Re: Koliko godina, mjeseci, dana u 6000 dana17.07.2008. u 09:00 - pre 191 meseci
Ne bih da ovo pretvorim u razglabanje o teoriji grešaka, gde se razmatraju slučajne ili grube greške, potom sistematske (nesavršenost alata), netačnost ulaznih podataka.....

Maksimalna greška se ne računa, ona se dobija iz dovoljnog broja merenjaje, u ovom slučaju računanja. Recimo ovako: uzmi datumske periode na (5,10,15.....40) godina, sračunaj pomoću gore datog VBA koda. U ovom slučaju to je etalon. Potom sračunaj tvojim načinom. Pogledaj rezultate. Uočićeš maksimalnu i minimalnu grešku (razliku). Srednju grešku znaš kako da dobiješ. Suma svih sa brojem merenja. Što više merenja (primera), bolja preciznost.

Mislim da je za tebe relevantnija srednja greška. Lakše je „sakriti“ iza nje nesavršenost metode.

Savet: Insistiraj kod drugih službi da ti daju datumske podatke na osnovu kojih su radili računanje staža. Tako ćeš uz primenu gore postavljenog koda jedino dobiti ispravne podatke.


 
Odgovor na temu

boki026
ing
Smederevo

Član broj: 175089
Poruke: 36
*.202.eunet.yu.



Profil

icon Re: Koliko godina, mjeseci, dana u 6000 dana21.07.2008. u 19:06 - pre 190 meseci
Private Sub PoslednjiDolazak_DblClick(Cancel As Integer)
On Error GoTo Err_PoslednjiDolazak_DblClick

Dim Pocetak, Kraj
Dim GS%, MS%, DS%
Pocetak = Me.PoslednjiDolazak
Kraj = Now()
GS = Year(Kraj) - Year(Pocetak)
MS = Month(Kraj) - Month(Pocetak)
DS = Day(Kraj) - Day(Pocetak) + 1
If DS < 0 Then
MS = MS - 1: DS = DS + 30
End If

If MS < 0 Then
GS = GS - 1: MS = MS + 12
End If

If GS < 0 Then
MsgBox ("Greška u unosu datuma poslednjeg dolaska")
Exit Sub

End If
If DS = 30 Then
MS = MS + 1: DS = 0
ElseIf DS = 31 Then
MS = MS + 1: DS = 1
End If

MsgBox "Godina= " & GS & "; Meseci= " & MS & "; Dana= " & DS & ".", vbInformation, "Poslednji dolazak"

Exit_PoslednjiDolazak_DblClick:
Exit Sub

Err_PoslednjiDolazak_DblClick:
MsgBox ("Niste uneli datum poslednjeg dolaska")
Resume Exit_PoslednjiDolazak_DblClick
End Sub
Ovo je kod koji racuna vreme od zeljenog datuma do danasnjeg dana na dupli klik datumskog polja(meni je trebao za neke druge stvari). Mozda pomogne.
 
Odgovor na temu

izonic
ishab zonic
Tuzla

Član broj: 38128
Poruke: 591
89.146.168.*

Sajt: www.icentar.ba


+2 Profil

icon Re: Koliko godina, mjeseci, dana u 6000 dana22.07.2008. u 10:24 - pre 190 meseci
Code:
Function Period_D(Od_Datuma, BrojDana As Integer)
Dim DatumX As Date
Dim DatumD As Date
Dim Godine As Integer
Dim Mjeseci As Integer
Dim Dani As Integer
Dim I As Integer
Dim P As Integer

DatumD = Od_Datuma
DatumX = DatumD
P = Month(DatumD)
For I = 1 To BrojDana
DatumX = DatumX + 1
If P <> Month(DatumX) Then
P = Month(DatumX)
Mjeseci = Mjeseci + 1
Dani = 0
   If Mjeseci > 11 Then
      Mjeseci = 0
      Dani = 0
      Godine = Godine + 1
   End If
End If
Dani = Dani + 1
Next I

Period_D = Godine & "/" & Mjeseci & "/" & Dani
End Function


E sad pitanje je dali se broji i zadni datum odnosno sa tim danom ili bez.
Ovo je sa tim danom.
Bez tog dana treba oduzeti jedan dan.

Ulazni podaci su:
Od_Datuma---Datum od kojeg brojimo Napr. "01.01.2001"
BrojDana-----Broj dana koje brojimo Napr. 600
zxz
 
Odgovor na temu

[es] :: Access :: Koliko godina, mjeseci, dana u 6000 dana

[ Pregleda: 8332 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.