Ich habe so etwas für meine ATZ-Uhr gebraucht:
Code:
Lcdat 6 , 1 , "Noch " ; Str(tagerest) ; " Tage "
Lcdat 7 , 1 , Str(stundenrest) ; "Std. " ; Str(minutenrest) ; "Min. " ; Str(sekundenrest) ; "Sek. "
'_________________________________________________________________________________________
Function Zeitdiff() As Long 'Errechnet die Zeitdifferenz zwischen zwei Zeitpunkten in Sekunden
Zeitdiff = 0
Schalttag1 = 0
Schalttag2 = 0
'
'----- Zaehlen der Sekunden seit Tagesbeginn ------
Sek1 = Sekunde 'Sekunden
Sek2 = Sekunde_end
'
Temp1a = Minute * 60
Sek1 = Sek1 + Temp1a 'Minuten
Temp2a = Minute_end * 60
Sek2 = Sek2 + Temp2a
Temp1a = Stunde * 3600
Sek1 = Sek1 + Temp1a
Temp2a = Stunde_end * 3600 'Stunden
Sek2 = Sek2 + Temp2a
'
'----- Speichern der Tage vor einem Monat ---------
Monat12(1) = 0 : Monat12(7) = 181
Monat12(2) = 31 : Monat12(8) = 212
Monat12(3) = 59 : Monat12(9) = 243
Monat12(4) = 90 : Monat12(10) = 273
Monat12(5) = 120 : Monat12(11) = 304
Monat12(6) = 151 : Monat12(12) = 334
'
'----- Berechnen der ganzen Tage seit Jahresbeginn -----
Tag1 = Tag - 1
Monat1 = Monat
Tag1 = Tag1 + Monat12(monat1)
'
Tag2 = Tag_end - 1
Monat2 = Monat_end
Tag2 = Tag2 + Monat12(monat2)
'
'----- Jahreszahl ermitteln -----
Jahr1 = Jahr
Jahr2 = Jahr_end
'
'----- Ermitteln ob im aktuelle Jahr ein Schalttag war ---
If Monat1 > 2 Then
Temp1a = Jahr1 Mod 4 : Temp2a = Jahr1 Mod 100 : Temp1b = Jahr1 Mod 400
If Temp1a = 0 And Temp2a <> 0 Then
Schalttag1 = 1
Elseif Temp1b = 0 Then 'IF(Jahr1 MOD 4 = 0 AND Jahr1 MOD 100 <> 0) OR Jahr1 MOD 400 = 0 THEN
Schalttag1 = 1
End If
End If
If Monat2 > 2 Then
Temp1a = Jahr2 Mod 4 : Temp2a = Jahr2 Mod 100 : Temp1b = Jahr2 Mod 400
If Temp1a = 0 And Temp2a <> 0 Then 'IF(Jahr2 MOD 4 = 0 AND Jahr2 MOD 100 <> 0) OR Jahr2 MOD 400 = 0 THEN
Schalttag2 = 1
Elseif Temp1b = 0 Then
Schalttag2 = 1
End If
End If
'
'----- Erechnen der Schalttage seit dem Jahre 1 -----
Jahr1 = Jahr1 - 1
Jahr2 = Jahr2 - 1
Temp1a = Jahr1 \ 4 : Temp1b = Jahr1 \ 100 : Temp1c = Jahr1 \ 400
Schalttag1 = Schalttag1 + Temp1a 'Schalttag1 = Schalttag1 +(Jahr1 \ 4) -(Jahr1 \ 100) +(Jahr1 \ 400)
Schalttag1 = Schalttag1 - Temp1b
Schalttag1 = Schalttag1 + Temp1c
Temp2a = Jahr2 \ 4 : Temp2b = Jahr2 \ 100 : Temp2c = Jahr2 \ 400
Schalttag2 = Schalttag2 + Temp2a 'Schalttag2 = Schalttag2 +(Jahr2 \ 4) -(Jahr2 \ 100) +(Jahr2 \ 400)
Schalttag2 = Schalttag2 - Temp2b
Schalttag2 = Schalttag2 + Temp2c
'----- Berechnen der Zeitdifferenz -----
'ZeitDiff = Sek2 - Sek1 +(Tag2 - Tag1 + Schalttag2 - Schalttag1) * 86400 +(Jahr2 - Jahr1) * 31536000
Temp1b = Jahr2 - Jahr1
Temp1b = Temp1b * 31536000
Temp1a = Tag2 - Tag1
Temp1a = Temp1a + Schalttag2
Temp1a = Temp1a - Schalttag1
Temp1a = Temp1a * 86400
Temp2c = Sek2 - Sek1
Zeitdiff = Zeitdiff + Temp1a
Zeitdiff = Zeitdiff + Temp1b
Zeitdiff = Zeitdiff + Temp2c
Tagerest = Secdiff \ 86400
Stundenrest = Tagerest * 86400 'StundenRest = INT(((SecDiff -(TageRest * 86400)) / 3600)
Stundenrest = Secdiff - Stundenrest
Stundenrest = Stundenrest \ 3600
Temp1a = Tagerest * 86400 'MinutenRest = INT(((SecDiff -(TageRest * 86400) -(StundenRest * 3600)) / 60)
Temp1b = Stundenrest * 3600
Minutenrest = Secdiff - Temp1a
Minutenrest = Minutenrest - Temp1b
Minutenrest = Minutenrest \ 60
Temp1c = Minutenrest * 60 'SekundenRest = SecDiff -(TageRest * 86400) -(StundenRest * 3600) -(MinutenRest * 60)
Sekundenrest = Secdiff - Temp1a
Sekundenrest = Sekundenrest - Temp1b
Sekundenrest = Sekundenrest - Temp1c
End Function
Quelle> http://www.antonis.de/faq/progs/tagdiff.bas
Lesezeichen