Czym Jest Czas Epoch (Czas Unix)?
Czas epoch, nazywany też czasem Unix lub Unix timestamp (uniksowym znacznikiem czasu), to liczba sekund, które upłynęły od 1 stycznia 1970 r., 00:00:00 UTC, czyli momentu nazywanego epoką Uniksa. Na przykład 1700000000 to 14 listopada 2023 r., godz. 22:13:20 UTC.
Komputery przechowują czas w ten sposób, bo pojedynczą liczbę łatwo porównywać, sortować i przesyłać między systemami, a do tego oznacza ona ten sam moment na całym świecie. Strefy czasowe pojawiają się dopiero wtedy, gdy zamieniasz ją na datę czytelną dla ludzi. Czas Unix pomija sekundy przestępne: każda doba liczy dokładnie 86 400 sekund.

Sekundy, Milisekundy, Mikrosekundy czy Nanosekundy?
Znaczniki czasu występują w różnych dokładnościach. Konwerter rozpoznaje jednostkę po liczbie cyfr, a Ty możesz ją zmienić w menu jednostek:
Klasyczny Unix timestamp, używany przez Linuksa, PHP, time.time() w Pythonie (jako liczba zmiennoprzecinkowa), pola exp w tokenach JWT i większość API. Przykład: 1700000000.
Używane przez JavaScript (Date.now()), Javę oraz wiele baz danych i logów. Przykład: 1700000000000.
Używane przez UnixMicro() w Go oraz wiele logów i śladów (traces) o wysokiej rozdzielczości. Przykład: 1700000000000000.
Używane przez UnixNano() w Go, InfluxDB i systemy monitoringu. Przykład: 1700000000000000000.
Advertisement
Jak Zamienić Unix Timestamp na Datę
Wpisz go na karcie Timestamp na datę. Przecinki, spacje i część dziesiętna (np. 1700000000.5) są akceptowane, a wartości ujemne dają daty sprzed 1970 r.
Etykieta pokazuje, czy liczba została odczytana jako sekundy, milisekundy, mikrosekundy czy nanosekundy. Jeśli wykrycie jest błędne, wybierz jednostkę samodzielnie.
Otrzymujesz datę w UTC i w Twojej strefie czasowej, w formatach ISO 8601 i RFC 2822, informację, jak dawno to było, oraz ten sam moment we wszystkich czterech jednostkach.
Wybierz dowolną strefę czasową z listy, aby zobaczyć ten sam moment w innym miejscu, np. żeby sprawdzić, o której godzinie powstał wpis w logu według czasu współpracownika za granicą.
Jak Zamienić Datę na Unix Timestamp
Otwórz kartę Data na timestamp, wybierz datę i godzinę oraz strefę czasową, do której należą. Otrzymasz czas epoch w sekundach i milisekundach oraz zapis ISO 8601 w UTC.
Ten sam panel pokazuje pierwszą i ostatnią sekundę danego dnia, miesiąca i roku w wybranej strefie czasowej. Przydaje się to w zapytaniach do bazy danych, takich jak „wszystkie zamówienia złożone w październiku według czasu nowojorskiego”, gdzie potrzebujesz znaczników czasu początku i końca okresu.
Advertisement
Strefy Czasowe i Czas Letni
Unix timestamp nie ma strefy czasowej: zawsze liczy się od północy UTC 1 stycznia 1970 r. Ten sam znacznik czasu jest po prostu pokazywany jako różne godziny w różnych miejscach, np. dla 1700000000 jest to 22:13 w Londynie i 03:43 następnego dnia rano w Indiach.
Strefy czasowe mają znaczenie przy zamianie daty na timestamp. Niektóre godziny występują dwa razy, gdy zegary cofa się o godzinę, a niektóre nie występują wcale, gdy przestawia się je do przodu. W noc, gdy w USA zegary przesuwają się do przodu, godzina 02:30 w Nowym Jorku nie istnieje. To narzędzie obsługuje oba przypadki tak jak Python: nieistniejąca godzina jest przesuwana do przodu o długość luki, a dla godziny występującej dwukrotnie używane jest jej pierwsze wystąpienie.
Problem Roku 2038
Starsze systemy przechowują czas Unix w 32-bitowej liczbie całkowitej ze znakiem, której maksimum to 2147483647: 19 stycznia 2038 r., godz. 03:14:07 UTC. Sekundę później liczba się przepełnia i staje się ujemna, a takie systemy odczytują datę jako 13 grudnia 1901 r.
Większość nowoczesnych systemów operacyjnych i języków używa czasu 64-bitowego i nie jest zagrożona, ale urządzenia wbudowane, stare formaty plików, część starszego kodu oraz typ kolumny TIMESTAMP w MySQL (który kończy się na 2038-01-19 03:14:07 UTC) nadal tak. Konwerter wyświetla ostrzeżenie dla każdego znacznika czasu spoza zakresu 32 bitów, dzięki czemu wychwycisz wartości, które mogą zepsuć starsze oprogramowanie.
Advertisement
Bieżący Czas Epoch w Kodzie
Każdy język i powłoka potrafią odczytać i przekonwertować czas Unix:
Math.floor(Date.now() / 1000) // sekundy
Date.now() // milisekundy
new Date(1700000000 * 1000).toISOString() // '2023-11-14T22:13:20.000Z'import time, datetime
int(time.time()) # sekundy
datetime.datetime.fromtimestamp(1700000000, datetime.timezone.utc)
# 2023-11-14 22:13:20+00:00date +%s # bieżące sekundy epoch
date -u -d @1700000000 # Linux (GNU date)
date -u -r 1700000000 # macOS (BSD date)-- PostgreSQL
SELECT extract(epoch FROM now());
SELECT to_timestamp(1700000000);
-- MySQL
SELECT UNIX_TIMESTAMP();
SELECT FROM_UNIXTIME(1700000000);time(); // PHP
date('c', 1700000000);
time.Now().Unix() // Go
Instant.now().getEpochSecond() // Java=(A1/86400)+DATE(1970,1,1) // sekundy epoch z A1 na datę UTC
=(B1-DATE(1970,1,1))*86400 // data UTC z B1 na sekundy epochWażne Znaczniki Czasu Unix
0: 1 stycznia 1970 r., 00:00:00 UTC, epoka Uniksa.1000000000: 9 września 2001 r., 01:46:40 UTC, pierwszy 10-cyfrowy timestamp.1234567890: 13 lutego 2009 r., 23:31:30 UTC.1700000000: 14 listopada 2023 r., 22:13:20 UTC.1800000000: 15 stycznia 2027 r., 08:00:00 UTC.2000000000: 18 maja 2033 r., 03:33:20 UTC.2147483647: 19 stycznia 2038 r., 03:14:07 UTC, limit 32 bitów.4294967295: 7 lutego 2106 r., 06:28:15 UTC, limit 32 bitów bez znaku.
Advertisement
Więcej Narzędzi dla Programistów
Inne darmowe narzędzia dla programistów i administratorów systemów, wszystkie działające w Twojej przeglądarce: