Przewodnik dla programistów po konwerterze znaczników czasu Unix
Opanuj konwerter znaczników czasu Unix. Naucz się konwertować czas epoki na daty w formacie czytelnym dla ludzi, obsługiwać różne języki i unikać powszechnych pułapek, na które natrafiają programiści.

Zalecane rozszerzenia
Konwerter timestamps Unix to jedno z tych prostych, ale niezbędnych narzędzi, po które jako programista lub analityk danych będziesz sięgał nieustannie. To poręczne narzędzie przekształca długi, pozornie losowy numer w datę i godzinę, które faktycznie możemy zrozumieć. Tłumaczenie to jest kluczowe, gdy przeszukujesz logi systemowe, pracujesz z API lub odpytujesz bazy danych, w których czas jest przechowywany w tym super-wydajnym formacie.
Czym jest timestamp Unix i dlaczego jest ważny

Zanim naprawdę docenisz dobry konwerter, musisz zrozumieć, czym ten numer tak naprawdę jest. W swej istocie timestamp Unix to po prostu ciągły licznik sekund. Śledzi całkowitą liczbę sekund, które upłynęły od 00:00:00 UTC 1 stycznia 1970 roku. Ten konkretny moment w czasie jest powszechnie znany jako "epoka Unix".
Dlaczego zatem ta metoda? Prostota i wydajność. Przechowywanie czasu jako pojedynczej liczby całkowitej jest znacznie bardziej kompaktowe i wydajne niż rozbudowany ciąg znaków, jak np. "piątek, 1 stycznia 2021 r., 12:00:00 AM GMT". Czyni to go idealnym do kilku kluczowych obszarów:
- Przechowywanie w bazach danych: Timestampy są małe, co sprawia, że są szybkie do indeksowania i odpytywania. To ogromna wygrana dla wydajności.
- Pakiety API: Wysyłanie pojedynczej liczby w obie strony jest znacznie lżejsze pod względem przepustowości niż wysyłanie pełnego daty, co prowadzi do szybszych czasów odpowiedzi.
- Pliki dzienników: Gdy parsujesz logi z dziesiątek różnych systemów, posiadanie jednolitego, niezależnego od języka timestampu jest ratunkiem.
- Obliczenia: Musisz wiedzieć, ile trwał proces? Wystarczy odjąć timestamp rozpoczęcia od timestampu zakończenia. To prosta arytmetyka liczb całkowitych.
Sekundy vs. Milisekundy i nie tylko
Klasyczny timestamp Unix to 10-cyfrowa liczba reprezentująca sekundy. Jednak wraz z rozwojem technologii pojawiła się potrzeba bardziej precyzyjnego odmierzania czasu. W tym miejscu zaczniesz widzieć timestampy o różnych długościach i jest to częsta pułapka.
Oto szybki przegląd tego, co zazwyczaj spotkasz w praktyce. Pomylenie jednego z drugim to klasyczny błąd "o tysiąc za dużo/mniej", który może prowadzić do bardzo mylących błędów.
Popularne formaty timestampów Unix w skrócie
| Jednostka | Cyfry | Typowy przypadek użycia | Przykładowa wartość (dla tego samego momentu) |
|---|---|---|---|
| Sekundy | 10 | Standard dla większości systemów back-end, baz danych i API. | 1609459200 |
| Milisekundy | 13 | Bardzo popularne w technologiach webowych, szczególnie w JavaScript. | 1609459200000 |
| Mikrosekundy | 16 | Używane w handlu高频交易 lub obliczeniach naukowych. | 1609459200000000 |
Rozróżnienie tych formatów jest kluczowe. Jeśli narzędzie oczekuje sekund, a podasz mu milisekundy, otrzymasz datę oddaloną o tysiące lat w przyszłość. To błąd, który każdy z nas kiedyś popełnił!
Słynny problem roku 2038
Elegancka prostota timestampu Unix stworzyła również tykającą bombę zegarową: "problem roku 2038". Na starszych systemach 32-bitowych timestampy były przechowywane jako liczb całkowitych ze znakiem 32-bitowych. Problem polega na tym, że tego typu liczba całkowita ma sufit – nie może pomieścić liczby większej niż 2,147,483,647.
19 stycznia 2038 roku o godzinie 03:14:07 UTC , liczba sekund od epoki przekroczy ten limit. Kiedy to nastąpi, liczba całkowita "zawinie się" i stanie się liczbą ujemną. Spowoduje to, że podatne systemy zinterpretują datę jako cofającą się do 1901, co może doprowadzić do awarii miliardów starszych urządzeń wciąż znajdujących się w użyciu. Więcej informacji o epoce Unix i jej wpływie możesz uzyskać od ekspertów z StrongDM.
Na szczęście większość z nas nie musi się o to martwić na co dzień. Ogromna majority nowoczesnych systemów przeszła na 64-bitowe liczby całkowite do odmierzania czasu. 64-bitowa liczba całkowita jest tak ogromna, że nie przepełni się przez kolejne 292 miliardy lat, co skutecznie rozwiązuje problem raz na zawsze.
Jest to jednak fantastyczny fragment historii informatyki i kluczowa wiedza, jeśli kiedykolwiek przyjdzie Ci pracować ze starszymi systemami wbudowanymi lub starszymi bazami kodu. Zrozumienie tych podstaw sprawia, że każdy konwerter znaczników czasu Unix staje się znacznie potężniejszym narzędziem w Twoich rękach.
Ułatwianie konwersji w przeglądarce
Choć użycie komendy w terminalu czy fragmentu kodu działa, nie zawsze jest to najszybszy sposób na załatwienie sprawy. Czasami po prostu potrzebujesz odpowiedzi natychmiast, bez rozpraszania się lub przełączania okien. Tu właśnie w pełni swoją wartość udowadnia dobre narzędzie oparte na przeglądarce, szczególnie dedykowany konwerter znaczników czasu Unix, który działa bezpośrednio w Twojej przeglądarce.
Prawdziwa magia tkwi w utrzymaniu ciągłości pracy. Wyobraź sobie: przeglądasz odpowiedź API w narzędziach developerskich przeglądarki i natrafiasz na znacznik czasu. Zamiast otwierać kolejną kartę czy uruchamiać terminal, używasz szybkiego skrótu klawiszowego, wklejasz liczbę i natychmiast otrzymujesz odpowiedź. Taki właśnie bezproblemowy przepływ pracy zapewniają narzędzia takie jak ShiftShift Extensions, które pakują wiele przydatnych narzędzi w jeden Paletę poleceń.
Uzyskuj natychmiastowe odpowiedzi za pomocą skrótu klawiszowego
Wszystko sprowadza się do szybkości. Za pomocą narzędzia takiego jak ShiftShift, szybkie dwukrotne naciśnięcie klawisza Shift (lub Cmd+Shift+P na Macu) otwiera pasek poleceń. Po prostu zacznij pisać "timestamp", a pojawi się konwerter. Wklejasz swoją wartość i natychmiast masz datę w czytelnej formie.
Oto jak to wygląda – Paleta poleceń jest gotowa i czeka, by przekonwertować znacznik czasu tuż nad Twoją bieżącą stroną.
Najlepsze jest to, jak wtapia się w tło, nie przeszkadzając. Konwerter to tylko jedno z wielu narzędzi dostępnych w tym samym nakładaniu, więc nigdy nie musisz opuszczać tego, co robisz.
Takie podejście jest zbawienne dla deweloperów, testerów i każdego, kto praktycznie mieszka w przeglądarce. Ponadto konwersja odbywa się całkowicie na Twoim komputerze. Wrażliwe dane z logów czy odpowiedzi API nigdy nie opuszczają Twojego komputera, co jest ogromnym sukcesem w kwestii prywatności.
Możliwość przekonwertowania znacznika czasu, sformatowania niechlujnego bloku JSON, a następnie obliczenia różnicy czasowej – wszystko z tego samego interfejsu – ogromnie oszczędza czas. Zamienia toporny proces z użyciem wielu narzędzi w jedną płynną czynność.
Nie tylko jedna sztuczka
Dobre narzędzie w przeglądarce to rzadko tylko jedno narzędzie; jest częścią całego zestawu. Często okaże się, że korzystasz z konwertera znaczników czasu wraz z innymi funkcjami.
Na przykład możesz łączyć go z:
- Formatowaniem JSON lub SQL, aby uporządkować kod przed sięgnięciem po znacznik czasu.
- Wbudowanym kalkulatorem do szybkich obliczeń na wartościach epoki. (Możesz pobawić się podobnym narzędziem na stronie kalkulatora ShiftShift, aby zobaczyć, jak to działa).
- Narzędziem do porównywania tekstu, aby dostrzec różnice między dwiema odpowiedziami API, wraz ze znacznikami czasu.
Posiadanie wszystkich tych niezbędnych narzędzi w jednym miejscu tworzy znacznie szybszy i spójniejszy przepływ pracy. Chodzi nie tylko o wygodę – chodzi o wyeliminowanie wszystkich tych drobnych, powtarzalnych przerw, które się kumulują i zabijają produktywność w ciągu dnia.
Praktyczne konwersje znaczników czasu w kodzie
Jeśli jesteś deweloperem, wiesz, że majstrowanie przy znacznikach czasu to część pracy. Ale bądźmy szczerzy, składnia nigdy nie jest taka sama w jednym języku jak w drugim. Ta sekcja jest Twoim podręcznym ściągawka, pełnym fragmentów kodu, które możesz od razu skopiować i użyć na platformach, na których realmente pracujesz. Koniec z przeszukiwaniem starych wątków na Stack Overflow – oto praktyczne przykłady, które pomogą Ci ruszyć z miejsca.

Niezależnie od tego, czy przetwarzasz dane na frontendzie sieciowym, piszesz skrypt w Pythonie, czy odpytujesz bazę danych, konwersja czasu epoch jest fundamentalną umiejętnością. Omówimy najczęstsze scenariusze, od zamiany liczby całkowitej epoch na czytelny ciąg znaków, a następnie wykonanie tego procesu w odwrotną stronę.
Konwersja znaczników czasu w JavaScript
Głównym narzędziem jest tutaj obiekt Date JavaScriptu, ale ma on jedną kluczową cechę, która często sprawia problemy deweloperom: operuje on w milisekundach, a nie w sekundach. To klasyczne źródło błędów, gdy frontend komunikuje się z backendem używającym standardowych, 10-cyfrowych, sekundowych znaczników czasu.
Aby poprawnie przekonwertować standardowy znacznik czasu Unix (w sekundach) na obiekt Date, należy pomnożyć go przez 1000.
// A standard 10-digit Unix timestamp (in seconds)
const unixTimestamp = 1672531200;
// Convert to milliseconds, then create a Date object
const dateObject = new Date(unixTimestamp * 1000);
// Format into a readable UTC string
// Output: Sun, 01 Jan 2023 00:00:00 GMT
console.log(dateObject.toUTCString());
Potrzebujesz aktualnego znacznika czasu? Date.now() dostarcza go w milisekundach. Po prostu pamiętaj, aby przed wysłaniem standardowego 10-cyfrowego znacznika czasu do API podzielić przez 1000 i zaokrąglić w dół.
Obsługa konwersji w Pythonie
Po stronie backendu moduł datetime Pythona jest potężnym narzędziem. Jest niezwykle elastyczny i oferuje świetne wsparcie dla konwersji uwzględniających strefy czasowe, co czyni go niezawodnym wyborem dla usług wymagających precyzyjnej obsługi czasu w różnych regionach.
Oto prosty sposób na konwersję znacznika czasu za pomocą biblioteki datetime:
import datetime
Standardowy 10-cyfrowy znacznik czasu Unix
unix_timestamp = 1672531200
Konwersja znacznika czasu na obiekt datetime
datetime_obj = datetime.datetime.fromtimestamp(unix_timestamp)
Formatowanie do czytelnej dla człowieka postaci
Wyjście: 2023-01-01 00:00:00
print(datetime_obj.strftime('%Y-%m-%d %H:%M:%S'))
To podejście zapewnia czysty i niezawodny sposób zarządzania czasem epoch w aplikacjach Python. Jeśli natomiast pracujesz ze złożonymi strukturami danych, takimi jak JSON, zawierającymi znaczniki czasu, nasz przewodnik dotyczący używania formatuera JSON może okazać się przydatny do debugowania.
Konwersje w bazach danych za pomocą SQL
Bazy danych często przechowują czas jako znaczniki Unix, ponieważ jest to wydajne rozwiązanie. Dobra wiadomość jest taka, że większość dialektów SQL posiada wbudowane funkcje do obsługi tych konwersji bezpośrednio w zapytaniach. Jest to znacznie wydajniejsze niż pobieranie surowych, całkowitych znaczników czasu i konwersja ich w kodzie aplikacji.
Znacznik czasu Unix jest niemal uniwersalny, stosowany w ponad 90% języków programowania — od Date.now() JavaScriptu po time.time() Pythona — obsługując biliony codziennych operacji. Prawidłowa obsługa stref czasowych jest kluczowa; solidny konwerter znaczników czasu Unix potrafi obsługiwać ponad 400 stref IANA, co pomaga zapobiegać błędom w szacunkowej 62% globalnych aplikacji, które nie zarządzają strefami czasowymi w sposób jawny. Więcej szczegółów na temat globalnego wykorzystania tych narzędzi można znaleźć na stronie Fossa.
Dla deweloperów możliwość formatowania SQL, konwersji znaczników czasu i obliczania różnic epoch bez opuszczania własnego komputera to ogromna wydajność. Podejście lokalne zapewnia również zgodność z nowoczesnymi standardami prywatności danych, takimi jak GDPR i CCPA.
Przykład w MySQL
W MySQL funkcją, której będziesz używać najczęściej, jest FROM_UNIXTIME(). Przyjmuje ona liczbę całkowitą epoch i ładnie konwertuje ją na standardowy format DATETIME.
SELECT FROM_UNIXTIME(1672531200);
-- Zwraca: '2023-01-01 00:00:00'
Aby wykonać operację odwrotną — od ciąg znaków daty do znacznika epoch — wystarczy użyć UNIX_TIMESTAMP().
SELECT UNIX_TIMESTAMP('2023-01-01 00:00:00');
-- Zwraca: 1672531200
Przykład dla PostgreSQL
PostgreSQL wykorzystuje nieco inną, ale równie potężną funkcję: to_timestamp(). Funkcja ta bezpośrednio konwertuje znacznik czasu Unix na wartość TIMESTAMP WITH TIME ZONE.
SELECT to_timestamp(1672531200);
-- Zwraca: 2023-01-01 00:00:00+00
Ponieważ od razu uwzględnia strefę czasową, jest bardzo solidnym wyborem dla aplikacji obsługujących globalną publiczność, gdzie precyzja czasu jest bezkompromisowa.
Opanowanie konwersji znaczników czasu w terminalu
Jeśli żyjesz w wierszu poleceń, przełączanie się do przeglądarki lub interfejsu graficznego w celu szybkiej konwersji znacznika czasu to prawdziwy zabójca produktywności. Po prostu rozprasza to koncentrację. Dobra wiadomość jest taka, że nie musisz tego robić; zarówno Linux, jak i macOS mają potężne, natywne narzędzia do obsługi tych konwersji bez opuszczania terminala.
Narzędziem standardowym w tym celu jest skromna komenda date. Jest obecna praktycznie na każdym systemie uniksopodobnym, ale jest pewien haczyk: składnia używania jej jako konwertera znacznika czasu unix różni się między Linuxem (GNU) a macOS (BSD). Znajomość tej różnicy jest kluczem do prawidłowego działania za każdym razem.
Konwersja znaczników czasu na Linuxie
Na Linuxie składnia jest czysta i łatwa do zapamiętania. Po prostu używasz flagi -d, aby określić datę, ale musisz poinformować system, że podajesz znacznik czasu epoki, poprzedzając go symbolem @.
Załóżmy, że przeszukujesz logi i trafiasz na znacznik czasu 1704067200. Aby zobaczyć, co to tak naprawdę oznacza, uruchomiłbyś:
date -d @1704067200
Natychmiast otrzymasz datę w czytelnym formacie, coś w rodzaju Mon Jan 1 00:00:00 UTC 2024. Możesz również uporządkować to wyjście, używając własnego niestandardowego formatu.
date -d @1704067200 +"%Y-%m-%d %H:%M:%S"
Wyjście: 2024-01-01 00:00:00
Wskazówka eksperta: Ta komenda staje się prawdziwą potęgą, gdy zaczniesz przekazywać do niej wyniki innych komend. Możesz
grepznacznik czasu z ogromnego pliku logów i podać go bezpośrednio dodatew celu natychmiastowej konwersji. Zamienia to wieloetapowe zadanie debugowania w jedną, elegancką linię poleceń.
Obsługa konwersji na macOS
Teraz, jeśli uruchomisz tę samą komendę Linux na Macu, pojawi się błąd. Wersja BSD komendy date, której używa macOS, wymaga flagi -r zamiast tej i nie wymaga prefiksu @.
Oto jak przekonwertować ten sam znacznik czasu na Macu:
date -r 1704067200
Podobnie jak w wersji dla Linuxa, możesz dodać opcje formatowania, aby uzyskać dokładnie takie wyjście, jakie chcesz.
date -r 1704067200 +"%Y-%m-%d %T %Z"
Wyjście: 2024-01-01 00:00:00 UTC
Ta drobna różnica jest klasyczną przeszkodą dla każdego, kto często przełącza się między Linuxem a macOS. Znajomość obu wersji zaoszczędzi ci wielu kłopotów w przyszłości.
Gdy opanujesz te komendy, możesz wkomponować konwersje znaczników czasu bezpośrednio w swoje skrypty powłoki i analizę logów. To niewielka umiejętność, ale summed up w poważne zyski produktywności, utrzymując cię w strefie koncentracji na pracy, która ma znaczenie.
Typowe pułapki znaczników czasu i jak ich unikać
Praca z znacznikami czasu Unix na pozór wydaje się prosta, ale kilka klasycznych błędów może prowadzić do naprawdę frustrujących usterek. Te problemy mają nieprzyjemny nawyk pojawiania się daleko od miejsca, gdzie faktycznie wystąpił błąd, co czyni je prawdziwym bólem głowy podczas debugowania. Potraktuj tę sekcję jako swojego przewodnika polowego w rozpoznawaniu i unikaniu najczęstszych pułapek związanych ze znacznikami czasu, jakie widziałem na przestrzeni lat.
Pomylenie sekund z milisekundami
Zdecydowanie najczęstszym błędem jest mylenie sekund z milisekundami. Standardowy znacznik czasu Unix to 10-cyfrowa liczba całkowita reprezentująca liczbę sekund od epoki. Ale wiele systemów, szczególnie w świecie JavaScript, operuje na 13-cyfrowym znaczniku czasu dla milisekund. Gdy aplikacja front-end przekaże wartość milisekund do backendu oczekującego sekund, wszystko zaczyna szaleć.
Dla unix timestamp convertor, ten 13-cyfrowy numer wygląda jak data tysiące lat w przyszłości. Może to niezauważalnie zniszczyć walidację danych, logikę planowania i wszelkie rekordy historyczne, które próbujesz zachować. To rodzaj subtelnej uszkodzenia danych, którego możesz nawet nie zauważyć przez kilka tygodni.
Pułapka strefy czasowej
Inna pułapka, która łapie nawet doświadczonych programistów, to obsługa stref czasowych. Z samej definicji znacznik czasu Unix jest zawsze w czasie uniwersalnym (UTC). Reprezentuje pojedynczy, uniwersalny moment w czasie, całkowicie niezależny od lokalizacji. Pułapka włącza się, gdy o tym zapomniesz i założysz, że znacznik czasu odzwierciedla czas lokalny użytkownika.
Ten błąd zazwyczaj zdarza się, gdy konwertujesz znacznik czasu na czytelną datę bez określenia strefy czasowej. Twój system często przyjmuje domyślnie czas lokalny serwera, co prowadzi do chaosu. Użytkownik w Nowym Jorku może zobaczyć czas przeznaczony dla osoby w Londynie, ale różni się on o kilka godzin.
Złota zasada jest prosta: zawsze traktuj znaczniki czasu jako UTC w backendzie. Przechowuj je jako UTC, przetwarzaj jako UTC, a do czasu lokalnego użytkownika konwertuj je tylko na frontendzie, tuż przed wyświetleniem.
Rozwiązywanie typowych błędów konwersji znaczników czasu
Gdy coś pójdzie nie tak, objawy mogą być mylące. Poniżej znajdziesz szybką tabelę referencyjną, którą przygotowałem na podstawie doświadczenia, aby pomóc Ci zdiagnozować i naprawić najczęstsze problemy w locie.
| Objaw | Prawdopodobna przyczyna | Rozwiązanie |
|---|---|---|
| Data jest w roku 52361 lub w innym odległym przyszłym roku. | Milisekundy vs. Sekundy. Przekazujesz 13-cyfrowy znacznik czasu w milisekundach do funkcji oczekującej 10-cyfrowego znacznika czasu w sekundach. | Przed przetworzeniem podziel znacznik czasu przez 1000. Zawsze waliduj liczbę cyfr przychodzących znaczników czasu. |
| Czas jest przesunięty o kilka godzin, ale data jest poprawna. | Nieprawidłowa obsługa strefy czasowej. Znacznik czasu został przekonwertowany z użyciem lokalnego czasu serwera zamiast czasu użytkownika lub UTC. | Upewnij się, że wszystkie konwersje jawnie określają docelową strefę czasową. Konwersję na czas lokalny wykonuj tylko po stronie klienta. |
| Data jest ustalona na 1 stycznia 1970 roku. | Nieprawidłowy lub pusty znacznik czasu. Wartość znacznika czasu jest prawdopodobnie 0, null, lub undefined. |
Dodaj sprawdzenie, aby upewnić się, że znacznik czasu jest prawidłową liczbą całkowitą dodatnią przed próbą konwersji. Podaj wartość domyślną. |
Wyświetla się komunikat "Invalid Date" lub NaN błąd. |
Nieprawidłowy typ danych. Znacznik czasu jest traktowany jako ciąg znaków lub inny typ nienumeryczny, gdy wymagana jest liczba. | Jawnie sparsuj znacznik czasu na liczbę całkowitą (parseInt() w JS, int() w Pythonie) przed użyciem go w funkcjach daty. |
Pamiętaj, szybka kontrola danych wejściowych może zaoszczędzić Ci godzin debugowania w przyszłości.
Unikanie niejednoznaczności dzięki standardowym formatom
Poleganie na surowych liczbowych znacznikach czasu przy przekazywaniu danych między systemami może być przyczyną zamieszania. Dlatego standaryzacja na uniwersalny format tekstowy, taki jak ISO 8601 (2022-05-17T12:00:00Z) jest tak świetnym posunięciem obronnym. Konwersja znaczników czasu Unix (np. 1652905200) w czytelny, samodokumentujący się format, jak ten, pomaga zapobiegać błędom w szacowanym 37% wywołaniach API między strefami czasowymi.
Biorąc pod uwagę, że 72% firm z Fortune 500 używa znaczników czasu Unix do analizy logów, gdzie pojedynczy błąd może kosztować ponad $10,000 w godzinach przestoju precyzja jest wszystkim. Możesz przeczytać więcej o tym, jak czas epoch jest wykorzystywany w różnych branżach na EpochConverter.
Dla tych, którzy zarządzają bazami danych, spójne obsługiwanie znaczników czasu jest równie kluczowe. Jeśli często zmagasz się z różnymi formatami znaczników czasu w swojej bazie danych, nasz przewodnik dotyczący używania potężnego formatowania SQL może pomóc Ci utrzymać zapytania w czystości i przewidywalności.
To drzewo decyzyjne pomaga wybrać odpowiednią komendę dla Twojego systemu operacyjnego, zapobiegając błędom składni, gdy potrzebujesz szybkiej konwersji.

Powyższy schemat blokowy jasno pokazuje kluczową różnicę składniową poleceń date na Linuxie (-d @...) i macOS (-r ...) — częste pułapki dla programistów pracujących w różnych środowiskach.
Aby zabezpieczyć swój kod, zawsze implementuj walidacje sprawdzające długość otrzymywanego znacznika czasu. Prosta funkcja weryfikująca wartość 10-cyfrową (sekundy) lub 13-cyfrową (milisekundy) może wychwycić te błędy, zanim zanieczystzą logikę twojej aplikacji.
Często zadawane pytania o znaczniki czasu Unix
Gdy już opanujesz obsługę znaczników czasu Unix, pojawia się kilka praktycznych pytań. Widziałem, jak potykają się o nie programiści na wszystkich poziomach, więc rozwiejmy najczęstsze wątpliwości, które spotkasz w codziennej pracy.
Dlaczego tak wiele API używa znaczników czasu zamiast ciągów ISO 8601?
Wszystko sprowadza się do czystej wydajności. Znacznik czasu Unix to zaledwie pojedyncza liczba, co czyni go niewiarygodnie kompaktowym w porównaniu z ciągiem jak „2023-10-27T10:00:00Z”. Mniejszy rozmiar oznacza mniej danych do wysłania siecią, co oszczędza przepustowość i może przyspieszyć odpowiedzi API.
Są również całkowicie niezależne od języka. Nie ma w nich dwuznaczności, dziwnych zasad parsowania ani problemów z formatowaniem regionalnym. Dla maszyny obliczenia liczbowe są zawsze szybsze niż parsowanie ciągów, dlatego wszelkie operacje na datach — jak obliczanie czasu między dwoma zdarzeniami — są tańsze obliczeniowo. W przypadku wydajnych systemów taka prostota jest ogromną zaletą.
Jaki jest właściwy sposób obsługi stref czasowych?
To jest kluczowa kwestia. Oto złota zasada: Znacznik czasu Unix jest zawsze, zawsze w UTC. Nie zawiera w sobie pojęcia strefy czasowej. To po prostu surowy licznik sekund od epoki.
Strefy czasowe mają znaczenie tylko wtedy, gdy musisz wyświetlić ten znacznik czasu człowiekowi.
Moja rada? Wszystko w backendzie trzymaj w UTC. Przechowuj je w bazie danych jako timestamp UTC, przekazuj przez API w UTC i wykonuj całą logikę serwerową w UTC. Jedynym momentem, gdy powinieneś przekonwertować go na lokalną strefę czasowej, jest moment tuż przed wyświetleniem użytkownikowi na frontendzie. Ta jedna praktyka uchroni Cię przed całą masą błędów związanych ze strefami czasowymi i czasem letnim.
Czy nadal powinienem się martwić problemem roku 2038?
W przypadku większości nowych projektów — prawdopodobnie nie. „Problem roku 2038” to pozostałość po starszych systemach, które używały 32-bitowej liczby całkowitej ze znakiem do przechowywania znacznika czasu. Gdy ta liczba staje się zbyt duża, przechodzi w cykl i staje się ujemna, cofając daty do 1901 roku.
Na szczęście prawie wszystkie nowoczesne systemy — od systemów operacyjnych po bazy danych — od dawna przeszły na 64-bitowe liczby całkowite. To de facto odsuwa problem w nieskończoność (dosłownie o miliardy lat), więc nie stanowi już praktycznego zagrożenia dla nas.
Mimo to, jeśli utrzymujesz starszy system lub pracujesz z sprzętem wbudowanym (np. urządzeniami IoT), zdecydowanie warto o tym wiedzieć. Zawsze miej świadomość, na jakiej architekturze budujesz system.
Jak mogę szybko przekonwertować znacznik czasu w Excelu lub Google Sheets?
Nie musisz w tym celu eksportować danych do osobnego konwertera znaczników czasu Unix. Wystarczy prosta formuła. Załóżmy, że Twój znacznik czasu znajduje się w komórce A1:
- Dla znaczników w sekundach (10 cyfr):
=A1 / 86400 + DATE(1970,1,1) - Dla znaczników w milisekundach (13 cyfr):
=A1 / 86400000 + DATE(1970,1,1)
Wystarczy wkleić formułę, a następnie sformatować komórkę jako „Datę” lub „Datę i godzinę”. To wybawienie, gdy szybko analizujesz eksporty danych i nie chcesz przerywać swojego procesu.
Masz dość ciągłego przełączania między edytorem, wierszem poleceń a tuzinem kart przeglądarki do prostych zadań? Zestaw Rozszerzeń ShiftShift integruje potężny konwerter znaczników czasu Unix, formatownik JSON, upiększacz SQL i wiele innych narzędzi bezpośrednio w przeglądarkę. Wszystko, czego potrzebujesz, jest dostępne jednym skrótem klawiszowym.