oroknaptar
hwsw famulus
hwsw at famulus.hu
Fri Apr 29 15:27:30 CEST 2005
> Mar volt tema tobbszor is, de most nekem is kene. A het napjat kene
> megallapitani a datumbol. Eleg mondjuk 2005..2015 intervallumban.
> Hogy a legegyszerubb?
2005. jan. 1 óta eltelt napok száma modulo 7, ekkor 0-ás eredmény szombat, 1
vasárnap ésatöbbi. (mivel 2005. jan .1. szombat). Kicsit egyszerûbb
2003.jan.1tõl mer az hétfõ volt ;-)
Ezt pedig így kell kiszámolni
1. Eltelt évek száma * 365
2. Bele kell számolni a szökõéveket (évszém uccsó két számjegye / 4-et hozzá
kell adni)
3. Aktuális év hónapjainak napjainak számának összege (ha az év mod 4 == 0,
és már elmúlt február, akkor +1, mivel ekkor a február 29 napos)
4. aktuális nap (mondjuk 23.a)
Lajos
-----------------------------------
No, akkor basic-ben......
es csak egesz aritmetikaval, hogy haladjon is.
Julianus datum-al szamol.
( a szamvegi # es az & valtozo
tipusra castol a basic-ben)
KJ
Function DatumToNap&(datum As String)
Dim ev As Long
Dim ho As Integer
Dim nap As Integer
Dim napok As Long
ev = Val(Right$(datum, 4))
ho = Val(Left$(datum, 2))
nap = Val(Mid$(datum, 4, 2))
ho = (ho + 9) Mod 12
ev = ev - (ho \ 10)
napok = (365 * ev) + (ev \ 4) - (ev \ 100) + (ev \ 400) + (((ho *
306) + 5) \ 10) + nap - 1
DatumToNap = napok
End Function
Function NapToDatum$(nsz As Long)
Dim ev As Integer
Dim ho As Integer
Dim nap As Integer
Dim ddd As Integer
Dim mi As Integer
Dim datum As String
Dim sev As Double
sev = (Int((10000# * nsz)) + 14780) / 3652425#
ev = Int(sev)
ddd = nsz - ((365& * ev) + (ev \ 4) - (ev \ 100) + (ev \ 400))
If ddd < 0 Then
ev = ev - 1
ddd = nsz - ((365& * ev) + (ev \ 4) - (ev \ 100) + (ev \
400))
End If
mi = ((100& * ddd) + 52) \ 3060
ev = ev + ((mi + 2) \ 12)
ho = ((mi + 2) Mod 12) + 1
nap = ddd - (((mi * 306) + 5) \ 10) + 1
datum = Right$("00" + LTrim$(Str$(ho)), 2) + "-" + Right$("00" +
LTrim$(Str$(nap)), 2) + "-" + LTrim$(Str$(ev))
NapToDatum = datum
End Function
Function sysnapcalc$(mystartsysdatum As String)
Dim mysysnap As String
If mystartsysdatum <> "" Then
mysysnap = Right$(" " + LTrim$(Str$(DatumToNap(Date$) -
DatumToNap(mystartsysdatum) + 1)), 3)
Else
mysysnap = "---"
End If
If Left$(Time$, 2) < "12" Then
mysysnap = mysysnap + "DE"
Else
mysysnap = mysysnap + "DU"
End If
sysnapcalc = mysysnap
End Function
More information about the Elektro
mailing list