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