Portál AbcLinuxu, 1. června 2025 04:24


Dotaz: clock_gettime(CLOCK_REALTIME, &time) při změně (letního/zimního) času

30.10.2011 10:51 hajoucha | skóre: 22
clock_gettime(CLOCK_REALTIME, &time) při změně (letního/zimního) času
Přečteno: 220×
Odpovědět | Admin
Ahojda, napadlo mě, jak se asi zachová funkce clock_gettime(CLOCK_REALTIME, &time) při změně času? Např. bych nechal každou sekundu vypisovat tento čas do souboru. Následně by došlo k přechodu na letní/zimní čas. Byl by v souboru skok?

Podle man clock_gettime :

All implementations support the system-wide real-time clock, which is identified by CLOCK_REALTIME. Its time represents seconds and nanoseconds since the Epoch. When its time is changed, timers for a relative interval are unaffected, but timers for an absolute point in time are affected.

Ovšem nerozumím tomu, co se myslí tím "absolute point in time". Všechny časy jsou přece relativní.

Řešení dotazu:


Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Řešení 1× (hajoucha (tazatel))
30.10.2011 11:28 Jan Hadrava | skóre: 3
Rozbalit Rozbalit vše Re: clock_gettime(CLOCK_REALTIME, &time) při změně (letního/zimního) času
Odpovědět | | Sbalit | Link | Blokovat | Admin
inzenyrska odpoved: Udelejme na to pokus!

Zmenime datum na 00:59.45 UTC, tedy na 02:59.45 naseho letniho casu. (= 15 sekund pred zmenou na zimni)

$ date -u 10300059.45

pro tento cas vrati clock_gettime(CLOCK_REALTIME, &time) hodnotu 1319936385

po 30 sekundach se cas zmeni na 01:00.15 UTC coz je 02:00.15 stredoevropskeho zimniho casu. (= 15 sec po zmene)

v tuto chvili clock_gettime(CLOCK_REALTIME, &time) vraci 1319936415

Rozdil je 30 sec, tedy skutecny cas, ktery uplyne.

Zaver: Pri zmene casu nedochazi ke zmene casu systemu, jenom se zmeni prepocet na lokalni cas. V souboru tak zadny skok o jednu hodinu zpet nebude.
30.10.2011 11:34 l4m4
Rozbalit Rozbalit vše Re: clock_gettime(CLOCK_REALTIME, &time) při změně (letního/zimního) času
Dodal bych, že by to mělo být zjevné i z
CLOCK_REALTIME. Its time represents seconds and nanoseconds since the Epoch.
Je to tedy počet sekund od někdy, nikoli lidský čas.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.