• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Funkcja czasu w C/C++ niezależna od czasu systemowego

Object Storage Arubacloud
+2 głosów
1,178 wizyt
pytanie zadane 28 sierpnia 2015 w C i C++ przez Benek Szeryf (91,010 p.)
Biblioteka standardowa <time.h> udostępnia funkcje gmtime() oraz localtime(), ale obie korzystają z ustawień systemowych. Czy jest możliwość otrzymania w C/C++ niezależnych wartości czasu? Chodzi mi o to, żeby zegar który tworzę, pokazywał takie same wartości dla użytkownika Szanghaju i Toronto, bazując na przykład na czasie uniwersalnym UT.

2 odpowiedzi

+3 głosów
odpowiedź 28 sierpnia 2015 przez Patrycjerz Mędrzec (192,320 p.)
Czas można równie dobrze pobierać z jakiegoś serwera - wtedy będziesz pewien, że na każdym komputerze masz tę samą wartość.
0 głosów
odpowiedź 28 sierpnia 2015 przez Benek Szeryf (91,010 p.)

Tak, oczywiście masz rację, ale właśnie program będzie działał na maszynie lokalnej, jak i na serwerze - taki dualizm. W każdym razie udało mi się dojść do pewnego rozwiązania. Otóż gmtime() nie tylko zależy od aktualnej godziny, ale także od sterfy czasowej - w sumie to dość oczywiste. Dla sterfy UT + 0 localtime() i gmtime() zwróci te same wartości, dla pozostałych stref wartości te będą różne. Czyli najważniejsze jest, by użytkownik miał ustawiony poprawnie czas systemowy i strefę. Wtedy nie będzie problemów.

Dodając jeszcze słowo komentarza, powyższa bibiloteka dostarcza funkcję time() zwracającą ilość sekund od 01.01.1970 r. Właśnie o niej myślałem, bo ( http://www.unixtimestamp.com/ ):

The unix time stamp is a way to track time as a running total of seconds. This count starts at the Unix Epoch on January 1st, 1970 at UTC. Therefore, the unix time stamp is merely the number of seconds between a particular date and the Unix Epoch. It should also be pointed out (thanks to the comments from visitors to this site) that this point in time technically does not change no matter where you are located on the globe. This is very useful to computer systems for tracking and sorting dated information in dynamic and distributed applications both online and client side.

Czyli ta funkcja nie zależy od czasu systemowego?

EDIT:

Tak, sprawdziłem, liczba sekund zależy od ustawienia zegara systemowego. Czyli nie ma wzorca czasu w komputerze w postaci niezależnego zegara, chociaż data i godzina w BIOS-ie jest podtrzymwana...

komentarz 28 sierpnia 2015 przez Patrycjerz Mędrzec (192,320 p.)

Tak, zależy. Jeśli będziesz miał na komputerze datę 1 stycznia 1970 roku, to ci wyjdzie raptem kilka tysięcy sekund smiley

komentarz 28 sierpnia 2015 przez Benek Szeryf (91,010 p.)
Właśnie sprawdziłem. Edytowałem wiadomość. Jestem zdziwiony, bo jak pisałem wyżej, czas jest w BIOS-ie podtrzymywany. Natomiast w pozostałych przypadkach komputer musi ufać, że człowiek dobrze ustawił zegar. Hm, zastanawiające czy tak na pewno powinno być.
komentarz 28 sierpnia 2015 przez Patrycjerz Mędrzec (192,320 p.)
I dlatego aplikacja powinna pobierać czas z zewnętrznego serwera (patrz wyżej).

Podobne pytania

0 głosów
2 odpowiedzi 272 wizyt
pytanie zadane 28 maja 2017 w C i C++ przez BinaryMan Stary wyjadacz (12,620 p.)
0 głosów
1 odpowiedź 554 wizyt
pytanie zadane 9 czerwca 2019 w C i C++ przez MegaaSoft Obywatel (1,430 p.)
0 głosów
1 odpowiedź 173 wizyt
pytanie zadane 17 kwietnia 2016 w C i C++ przez 0xf Dyskutant (8,180 p.)

92,570 zapytań

141,422 odpowiedzi

319,643 komentarzy

61,958 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...