Sommerzeit & mehr

  • 1
  • 2
  • Seite 2 von 2
Harald_K
 
Avatar
 
Betreff:

Re: Sommerzeit & mehr

 · 
Gepostet: 13.01.2014 - 20:43 Uhr  ·  #9
da wird wohl irgendwer so um 2100 rum nochmal dranmüssen ;)

übrigens ... Schaltjahre sind Jahre, die durch 4 teilbar sind, aber nicht durch 100, aber durch 400.

(ob auch noch "aber nicht durch 1000" dazukommt weiß ich jetzt grad nicht, wird aber auch erst 4000 aktuell)
Gunter
Administrator
Avatar
Geschlecht:
Herkunft: Frankfurt Main / Germany
Beiträge: 1697
Dabei seit: 02 / 2003
Betreff:

Re: Sommerzeit & mehr

 · 
Gepostet: 13.01.2014 - 21:03 Uhr  ·  #10
Hi,
die 1000er spielen da keine Rolle: 3000: ist keins 4000 ist eins.
Dafür reicht die 100er und 400er Regel.
Aber Vorsicht mit "erst 2100" - man sollte die Lebensdauer von Software nicht unterschätzen.
Ich habe ein Jahr nach 1999 -> 19100 gesehen!
Aber als man diese Software erstellte wurde auch mit jedem Byte gegeizt.

Gunter
Harry
Moderator
Avatar
Geschlecht:
Herkunft: zwischen Augsburg und Ulm
Alter: 60
Beiträge: 2155
Dabei seit: 03 / 2003
Betreff:

Re: Sommerzeit & mehr

 · 
Gepostet: 14.01.2014 - 12:50 Uhr  ·  #11
@Harald: dann mach mal :D

@ Gunter: du darfst natürlich auch

...... also ich mach mir keine Gedanken >2099 ;)
Harry
Moderator
Avatar
Geschlecht:
Herkunft: zwischen Augsburg und Ulm
Alter: 60
Beiträge: 2155
Dabei seit: 03 / 2003
Betreff:

Re: Sommerzeit & mehr

 · 
Gepostet: 30.03.2014 - 20:35 Uhr  ·  #12
Hab nen kleinen Fehler entdeckt (nachdem dieses Woende Sommerzeitumstellung war):

Code
Function STime(CalcH:Integer):Boolean;            // Sommerzeit ?
  Var ST : Boolean;
  Begin
    If (((MonthNum=3) and (DayNum>=StartST) and (CalcH>1)) or
        ((MonthNum=10) and (DayNum<=EndST) and (CalcH<3)) or
         (MonthNum in [4..9]))
      then
        ST:=true;
      else
        ST:=false;
      EndIf;
    Return(ST);
  End STime;


und in der Procedure GPSDaT fast am ende der Aufruf in dieser Procedure:
Code
If STime(Dummy)=true


Natürlich muß die Feststellung der Sommerzeit mit der richtigen/korrigierten Stunde erfolgen und nicht mit UTC-Zeit. Das hat zwar vorher auch funktioniert, jedoch (bei unserem Längengrad) nicht zur richtigen Uhrzeit (2 Uhr nachts), sondern erst um 3 Uhr, da CET=UTC+1.
Harry
Moderator
Avatar
Geschlecht:
Herkunft: zwischen Augsburg und Ulm
Alter: 60
Beiträge: 2155
Dabei seit: 03 / 2003
Betreff:

Re: Sommerzeit & mehr

 · 
Gepostet: 01.07.2014 - 19:51 Uhr  ·  #13
Leider habe ich noch einen Fehler entdeckt. Die Ausgabe der Zeit mit
Code

If STime(Dummy)=true 
      then 
        GPSTime:=IntToStr(Dummy+1:2:'0')+':'+IntToStr(MinNum:2:'0'); 
      else 
        GPSTime:=IntToStr(Dummy:2:'0')+':'+IntToStr(MinNum:2:'0'); 
      EndIf; 

bewirkt, daß während der Sommerzeit zur Uhrzeit 1 addiert wird, d.h. um 0:00 Uhr wird 24:00 Uhr angezeigt. Das muß man noch abfangen:
Code

If STime(Dummy)=true 
  then 
    Dummy:=Dummy+1;
    If Dummy=24
      then
        Dummy:=0;
      EndIf;
  EndIf;
GPSTime:=IntToStr(Dummy:2:'0')+':'+IntToStr(MinNum:2:'0');
Harry
Moderator
Avatar
Geschlecht:
Herkunft: zwischen Augsburg und Ulm
Alter: 60
Beiträge: 2155
Dabei seit: 03 / 2003
Betreff:

Re: Sommerzeit & mehr

 · 
Gepostet: 26.10.2014 - 09:24 Uhr  ·  #14
.... the neverending story :banghead:

Nachdem ich neulich bei einer Nachtfahrt einen Fehler entdeckt habe, habe ich letzte Nacht meinen GPS-Tacho mal gefilmt und gesehen, daß die Sommerzeitum(ab?)schaltung zwar funktionierte, aber zur falschen Uhrzeit. Also habe ich noch ein wenig nachgedacht und zwei kleine Fehler gefunden. Ich habe bisher im März letztes Woende um 02:00 Uhr auf 03:00 Uhr die Sommerzeit aktiviert und im Oktober letztes Woende um 03:00 Uhr auf 02:00 Uhr die Sommerzeit deaktiviert. Soweit so gut, aber meine Funktionen haben mit der Längengrad korrigierten UTC gearbeitet und ich habe so getan, also ob es "unsere" Zeit ist. Die Umstellung erfolgt (wenn man es von der Längengrad korrigierten UTC aus betrachtet) immer um 01:00 Uhr.

Hier also die hoffentlich fehlerfreie Sommerzeiterkennung:
Code

Function STime(CalcH:Integer):Boolean;            // Sommerzeit ?
  Var ST : Boolean;                               // CalcH=Längengrad korrigierte UTC !
  Begin                                           // Umschaltung immer um 01:00 UTC
    If (((MonthNum=3) and (DayNum=StartST) and (CalcH>0)) or  // >0 -> 01:00 UTC !
        ((MonthNum=3) and (DayNum>StartST)) or                //    -> 02:00 CET
        ((MonthNum=10) and (DayNum=EndST) and (CalcH<2)) or   // <2 -> 01:00 UTC !
        ((MonthNum=10) and (DayNum<EndST)) or                 //    -> 03:00 CEST
         (MonthNum in [4..9]))
      then
        ST:=true;                                 // Sommerzeit
      else
        ST:=false;                                // keine Sommerzeit
      EndIf;
    Return(ST);
  End STime;


Gruss
Harry
Harry
Moderator
Avatar
Geschlecht:
Herkunft: zwischen Augsburg und Ulm
Alter: 60
Beiträge: 2155
Dabei seit: 03 / 2003
Betreff:

Re: Sommerzeit & mehr

 · 
Gepostet: 10.09.2015 - 17:42 Uhr  ·  #15
Letzter Post in diesem Thread: die aktuelle Version findet man im Thread "SSD1306 via SPI" im jeweils letzten Download des GPS-Tachos. Dort dann komplett in einem Programm praktisch angewendet.

topic.php?t=3345

Gruss
Harry
  • 1
  • 2
  • Seite 2 von 2
Gewählte Zitate für Mehrfachzitierung:   0

Registrierte in diesem Topic

Aktuell kein registrierter in diesem Bereich

Die Statistik zeigt, wer in den letzten 5 Minuten online war. Erneuerung alle 90 Sekunden.
MySQL Queries: 15 · Cache Hits: 14   120   134 · Page-Gen-Time: 0.035225s · Speichernutzung: 2 MB · GZIP: ein · Viewport: SMXL-HiDPI