Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Zmiana czasu zimowego i letniego z NMEA GPS

16 Maj 2010 03:13 3116 5
  • Poziom 28  
    Z tego co mi wiadomo czas UTC zawarty w NMEA nie koryguje zmian czasu na okres letni i zimowy. W jaki więc sposób zmieniać czas z zimowego na letni i wzajemnie skoro co roku data zmiany czasu jest inna ... ? Czy istnieje jakaś coroczna zależność lub znacznik czasu w jakiejś ramce w standardzie NMEA aby na tej podstawie napisać dobrze kod do obslugi zegara? Znalazłem informacje o ramce $GPZDA ale jeszcze nigdy jej nie widziałem "na żywo", uniklana jak dinozaury.
  • Pomocny post
    Poziom 25  
    Witam,

    czytując za wikipedią:
    Cytat:

    W całej Unii Europejskiej (dyrektywa UE 2000/84/EC [6]) w ostatnią niedzielę marca o 1:00 czasu uniwersalnego (w zależności od strefy czasowej o 22:00 / 00:00 / 01:00 / 02:00 / 03:00 czasu lokalnego) zegary przestawia się godzinę do przodu, a w ostatnią niedzielę października o 1:00 czasu uniwersalnego (w zależności od strefy czasowej o 23:00 / 01:00 / 02:00 / 03:00 / 04:00 czasu lokalnego), o godzinę do tyłu.


    Pozdrawiam,
    GSM
  • Pomocny post
    Poziom 15  
    Precyzując dla naszej strefy czasowej w ostatnią niedzielę marca o godzinie 2:00 przestawiamy zegarki na godzinę 3:00 (czas letni). Natomiast w ostatnią niedzielę października z godziny 3:00 na godzinę 2:00 (czas zimowy).

    Zrobiłem już taki projekt więc dam Ci kilka wskazówek. Po pierwsze program na podstawie daty i godziny UTC będzie musiał określić czy aktualnie obowiązuje czas zimowy czy czas letni i dodać 1 lub 2 godziny do godziny UTC. Oczywiście w przypadku dodawania godziny będziesz musiał również uwzględnić możliwą zmianę daty. Sprawa jest banalna w przypadku miesięcy różnych od marca i października a jeszcze precyzując banalna również dla tych miesięcy do 24 marca i 24 października (wiadomo, że zostało jeszcze co najmniej 7 dni do końca miesiąca i na pewno nie wystąpiła jeszcze ostatnia niedziela miesiąca a więc i zmiana czasu). Sprawa jest trudniejsza dla 7 ostatnich dni miesiąca marca i października. Na podstawie daty musisz określić dzień tygodnia i na tej podstawie oraz na podstawie godziny dla przypadku kiedy trafisz na niedzielę będziesz musiał ustawić odpowiedni czas czy to zimowy czy letni. Na określenie dnia tygodnia na podstawie daty istnieją gotowe algorytmy więc możesz wykorzystać np. ten:
    http://www.algorytm.org/index.php?option=com_content&task=view&id=227&Itemid=28

    Później Twój zegarek może sobie "cykać" i tylko w newralgicznych punktach (od 25 marca i 25 października a przed końcem tych miesięcy) należy sprawdzać czy nie nastąpiła zmiana czasu i ją uwzględniać.

    Teraz pozostaje tylko przełożyć to co napisałem na kod programu. Powodzenia.
  • Poziom 28  
    Cenne porady, przydadzą się z pewnością :) tematu jeszcze nie zamykam bo pewnie komuś się przyda. Dam znać gdy zabiorę się za date i czas oraz napiszę co z tego wyszło.
  • Poziom 28  
    Na gotowca bym nie liczył, jest troche pisania. Mi się odechciało pisania kodu bo projekt był błachy a błąd przez góra dwie godziny w nocy nie sprawiał mi problemów bo urządzenie miało pracować za dnia. Dwa posty wyżej jest link i wszystko opisane od deski do deski.