oroknaptar
Rancz Lajos
csigaelektro at freemail.hu
Fri Apr 29 16:25:55 CEST 2005
Helló!
Rakéta verseny van? ;-) na, akkor én is beszúrom C-be:
__flash unsigned char daysInMonth[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
unsigned int daycnt = 0;
// eltelt evek alapjan, 2003.jan.1. tõl számolunk
daycnt += (time.year - 3) * 365;
// elmult szokoevek alapjan
daycnt += (time.year - 1) / 4;
// elmult honapok
for (i = 0; i < time.month - 1; i++)
{
daycnt += daysInMonth[i];
}
// nap szama a honapon belul
daycnt += time.day;
// szokoev es elmult mar februar
if ((time.year % 4 == 0) && time.month > 2)
daycnt++;
// kiszamitas es tarolas
time.dayofWeek = (daycnt + 1) % 7;
Üdv,
Lajos
On Fri, 29 Apr 2005 15:27:30 +0200, hwsw famulus wrote:
>> 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
>
> -----------------------------------
> Szponzorunk: http://tonerbolt.hu/
More information about the Elektro
mailing list