Projekt

Allgemein

Profil

Fehler #464

time zones are not handled at all

Von Maximilian Seesslen vor etwa 1 Jahr hinzugefügt. Vor 2 Monaten aktualisiert.

Status:
Neu
Priorität:
Normal
Zugewiesen an:
Zielversion:
Beginn:
05.01.2024
Abgabedatum:
% erledigt:

0%

Geschätzter Aufwand:
CS Zielversion:

Beschreibung

A replay is mapped one hour behind.

Day-light-saving is implemented now so CANRec is working. CET/CEST still hardcoded.
Problem is that RTC stores date/time plain. It has to be calculated to UTC to store and send it.

Devices like CANDis use the time send via cordyceps to display it directly. Use UTC in RTC and configure shown time?
Cordyceps sends hour/minute/second of localtime.

  • Lediglich im CANRec das Delta zu UTC einstellbar zu machen, waere am einfachsten. Dann wird die Sommerzeit gar nicht berechnet.
    Es gibt nur einen Befehl, um beim starten das Delta festzulegen (via EEPROM). CET ist dann der Default.
    CANRec koennte Sommerzeit selbst umstellen.
  • Having UTC in RTC only and adding timezone in CRtc.

The timezone could be stored in EEPROM. When picolibc is using tzset(), it would be more complicated.

CANRec uses time(nullptr) for timestamps. Is it using gettimeofday()? converting utc from RTC to local time and converting it back to UTC again?

newlib/picolib: time() calls gettimeofday() with zeropointer to timezone. It assumes gettimeofday() returns UTC.
glibc calls __clock_gettime().

POSIX.1-2008 marks gettimeofday() as obsolete, recommending the use of clock_gettime(2) instead.
TZ is ignored on linux kernel call.

What i did there:
calculated UTC from localtime in RTC. Used mktime to get time_t from localtime, but picolibc assumed it is UTC.

static_assert ( getEpoch( 2024, 11, 12, 12, 10, 1) == 1731413401, "Calculation of epoch wrong" );
#if IS_ENABLED ( BIWAK_RTC_HAS_UTC )
   return( getEpoch(...) );
#else
   return( getEpoch(...) + adjust );
#endif

Historie

#1

Von Maximilian Seesslen vor etwa 1 Jahr aktualisiert

Die mitteleuropäische Sommerzeit beginnt jeweils am letzten Sonntag
im März um 2:00 Uhr MEZ, indem die Stundenzählung um eine Stunde
von 2:00 Uhr auf 3:00 Uhr vorgestellt wird, und endet am letzten
Sonntag im Oktober um 3:00 Uhr MESZ, indem die Stundenzählung um
eine Stunde von 3:00 Uhr auf 2:00 Uhr zurückgestellt wird.

https://www.rechner.club/zeitumstellung/sommerzeit-berechnen

Normalzeit MEZ = UTC+1h
Sommerzeit MESZ = UTC+2h

#2

Von Maximilian Seesslen vor etwa 1 Jahr aktualisiert

  • Beschreibung aktualisiert (diff)
#3

Von Maximilian Seesslen vor etwa 1 Jahr aktualisiert

  • Beschreibung aktualisiert (diff)
#4

Von Maximilian Seesslen vor etwa 1 Jahr aktualisiert

  • Beschreibung aktualisiert (diff)
#5

Von Maximilian Seesslen vor etwa 1 Jahr aktualisiert

  • Beschreibung aktualisiert (diff)
#6

Von Maximilian Seesslen vor etwa 1 Jahr aktualisiert

  • Beschreibung aktualisiert (diff)
#7

Von Maximilian Seesslen vor etwa 1 Jahr aktualisiert

  • Beschreibung aktualisiert (diff)
#8

Von Maximilian Seesslen vor 2 Monaten aktualisiert

  • Beschreibung aktualisiert (diff)
#9

Von Maximilian Seesslen vor 2 Monaten aktualisiert

  • Beschreibung aktualisiert (diff)
#10

Von Maximilian Seesslen vor 2 Monaten aktualisiert

  • Beschreibung aktualisiert (diff)
#11

Von Maximilian Seesslen vor 2 Monaten aktualisiert

  • Beschreibung aktualisiert (diff)

Auch abrufbar als: Atom PDF