Sommerzeit & mehr

  • 1
  • 2
  • Page 2 of 2
Harald_K
 
Avatar
 
Subject:

Re: Sommerzeit & mehr

 · 
Posted: 13.01.2014 - 20:43  ·  #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
Gender:
Location: Frankfurt Main / Germany
Posts: 1697
Registered: 02 / 2003
Subject:

Re: Sommerzeit & mehr

 · 
Posted: 13.01.2014 - 21:03  ·  #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
Gender:
Location: zwischen Augsburg und Ulm
Age: 59
Posts: 2133
Registered: 03 / 2003
Subject:

Re: Sommerzeit & mehr

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

@ Gunter: du darfst natürlich auch

...... also ich mach mir keine Gedanken >2099 ;)
Harry
Moderator
Avatar
Gender:
Location: zwischen Augsburg und Ulm
Age: 59
Posts: 2133
Registered: 03 / 2003
Subject:

Re: Sommerzeit & mehr

 · 
Posted: 30.03.2014 - 20:35  ·  #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
Gender:
Location: zwischen Augsburg und Ulm
Age: 59
Posts: 2133
Registered: 03 / 2003
Subject:

Re: Sommerzeit & mehr

 · 
Posted: 01.07.2014 - 19:51  ·  #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
Gender:
Location: zwischen Augsburg und Ulm
Age: 59
Posts: 2133
Registered: 03 / 2003
Subject:

Re: Sommerzeit & mehr

 · 
Posted: 26.10.2014 - 09:24  ·  #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
Gender:
Location: zwischen Augsburg und Ulm
Age: 59
Posts: 2133
Registered: 03 / 2003
Subject:

Re: Sommerzeit & mehr

 · 
Posted: 10.09.2015 - 17:42  ·  #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
  • Page 2 of 2
Selected quotes for multi-quoting:   0

Registered users in this topic

Currently no registered users in this section

The statistic shows who was online during the last 5 minutes. Updated every 90 seconds.
MySQL Queries: 15 · Cache Hits: 14   120   134 · Page-Gen-Time: 0.037015s · Memory Usage: 2 MB · GZIP: on · Viewport: SMXL-HiDPI