Przelicznik epok i znaczników czasowych

Konwersja znacznika czasu na format daty lub otrzymanie znacznika czasu określonej daty.

Unixowy znacznik czasu
Data i czas

Data i czas

Języki programowania do uzyskania wartości znacznika czasu:

Math.round(new Date() / 1000)
Dokument
import time;
time.time()
Dokument
(int) (System.currentTimeMillis() / 1000)
Dokument
import ( "time" )
int32(time.Now().Unix())
Dokument
double now_time = std::chrono::duration_cast(std::chrono::system_clock::now().time_since_epoch()).count();
Dokument
NSDate().timeIntervalSince1970
Dokument
SELECT UNIX_TIMESTAMP(); #1567758868
SELECT FROM_UNIXTIME(1567758868); #2019-9-6 16:34:28
time()
Dokument
DateTimeOffset.Now.ToUnixTimeSeconds()
Dokument
Time.now.to_i
Dokument

Standardowa definicja specyfikacji daty i czasu

RFC 822 | RFC 1036 | RFC 1123 | RFC 2822 | RFC 3339 | RFC 5322 | ISO 8601

Co to jest znacznik czasu epoki?

Czas UNIX, lub czas POSIX, jest reprezentacją czasu używaną przez systemy UNIX lub UNIX-podobne: całkowita liczba sekund od 0:0:0:0 1 stycznia 1970 UTC do chwili obecnej, bez względu na sekundy przestępne.

Problem rok 2038

Najwcześniejsze wersje czasu Unix były 32-bitowymi liczbami całkowitymi zwiększającymi się z częstotliwością 60 Hz. Pierwsze wydanie Podręcznika Programisty Unix, wydane 3 listopada 1971 roku, zdefiniowało czas Unix jako "czas od 00:00:00, 1 stycznia 1971 roku, mierzony w sześćdziesięciostych częściach sekundy", czyli zaczynając od 00:00:00, 1 stycznia 1971 roku i zwiększając się o 60 Hz. Oznacza to, że przechowywanie czasu Unix jako 32-bitowej liczby całkowitej bez znaku wyczerpie się po 829 dniach (około 2,5 roku). Ze względu na to ograniczenie początkowy czas Unix był kilkakrotnie redefiniowany, dopóki nie zaczął korzystać z czasu początkowego 1 stycznia 1970 roku o godzinie 00:00:00 UTC, zmierzonym z częstotliwością 1 Hz. Ponieważ Unix i C używają 32-bitowych liczb całkowitych ze znakiem do reprezentowania czasu, pozwala to na reprezentację okresu czasu około 136 lat, podzielonego na pół na przed i po 1970 roku. Oznacza to, że do 19 stycznia 2038 roku reset zostanie wyczerpany.

Większość dzisiejszych systemów używających UNIX-a to systemy 32-bitowe, tj. reprezentujące typ czasu time_t jako 32-bitową liczbę całkowitą ze znakiem. Może ona reprezentować sekundy przez 136 lat. Reprezentuje 13 grudnia 1901 roku, godzinę 20:45:52 UTC do 19 stycznia 2038 roku, godzinę 3:14:07 UTC (binarnie: 01111111 11111111 11111111 11111111, 0x7FFF:FFFF), a w następnej sekundzie liczba binarna będzie wynosić 10000000 00000000 00000000 00000000 (0x8000:0000), jest to liczba ujemna, więc systemy będą błędnie interpretować czas jako 13 grudnia 1901 roku, 20:45:52 (i być może z powrotem do 1970 roku). W tym czasie mogą wystąpić problemy z oprogramowaniem, prowadzące do paraliżu systemu.

Obecne rozwiązanie polega na przekonwertowaniu systemu z 32-bitowego na 64-bitowy. W ramach 64-bitowego systemu ten czas może być reprezentowany aż do 292,2777702659 biliona w dniu 4 grudnia o godzinie 15:30:08.

Rozmiar pliku przekracza limit.

Nie możesz już przesyłać więcej plików.

Zaktualizuj swoje konto, aby odblokować więcej

Płatność miesięczna
Płatność roczna
-40%

Premium

US$ / Miesiąc
Jednorazowa płatność w wysokości US$36

Bez limitu

US$ / Miesiąc
Jednorazowa płatność w wysokości US$72