Převodník Unixových časových razítek
Dvoustranný převodník mezi Unixovým/Linuxovým časovým razítkem a datem a časem s možností porovnání v různých časových zónách.
Aktuální čas
Převod časového razítka na datum
Výsledek převodu(automaticky)
Převod data na časové razítko
Výsledek převodu(automaticky)
Nástroj pro převod více časových razítek na datum a čas
Nástroj pro převod více časových razítek na datum a čas
Nástroj pro převod více dat na časová razítka
Nástroj pro převod více dat na časová razítka
Používání
Tento nástroj slouží k rychlému provádění oboustranné konverze mezi Unixovým časovým razítkem a datumem a časem v různých scénářích. Podporuje přesnost v sekundách i milisekundách a umožňuje zvolit cílovou časovou zónu pro porovnávací zobrazení. Poskytuje jednokartový a vícekartový převodník. Převod probíhá okamžitě po zadání vstupu, při změně časové zóny se výsledky automaticky obnovují. Kromě toho obsahuje přednastavené časové rozmezí pro nedávné období a často používané časové intervaly, což uspokojí potřeby vývojářů při ladění i běžné potřeby při převodech.
Funkční vlastnosti nástroje
- Převod probíhá okamžitě po zadání vstupu, podporuje automatické rozpoznávání časových razítek v sekundách/milisekundách.
- Podporuje globální výběr a zobrazení časových zón: tři zobrazení - místní, UTC a zvolená časová zóna.
- Více převodních karet, což usnadňuje hromadné porovnávání.
- Rezponzivní rozhraní a přátelské k klávesnici, dobrá přístupnost.
- Obsahuje přednastavené časové rozmezí pro nedávné období a často používané časové intervaly, lze je jednoduše zkopírovat a použít.
Co je časové razítko?
Unixové časové razítko (Unix Timestamp) je celkový počet sekund nebo milisekund, které uplynuly od 1. ledna 1970 v 00:00:00 UTC (Unix Epoch).
Časové razítko je číslo reprezentující čas, obvykle v sekundách nebo milisekundách.
Počáteční bod časového razítka je 1. ledna 1970 v 00:00:00 UTC, tento čas se nazývá Unixový epoch.
Časové razítko bylo původně použito v operačním systému Unix, proto se často nazývá Unixové časové razítko.
Časové razítko se široce používá při programování a síťové komunikaci, zejména při vývoji webových aplikací.
Běžné úrovně přesnosti: sekundy (např. 1735689600) a milisekundy (např. 1735689600000). Při zobrazení data a času v souvislosti s časovou zónou je nutné provést formátování s ohledem na zvolenou časovou zónu.
Často používané časové razítka (trvání)
Problém roku 2038 s časovými razítky
Problém roku 2038 se týká přetečení 32bitového podepsaného celočíselného typu při ukládání Unixového časového razítka (v sekundách od 1. ledna 1970 00:00:00 UTC) po 19. lednu 2038 v 03:14:07.
Vzhledem k tomu, že rozsah 32bitového podepsaného celočíselného typu je od -2 147 483 648 do 2 147 483 647 a časové razítko pro 19. ledna 2038 v 03:14:07 UTC je 2 147 483 647, po tomto bodě 32bitový podepsaný celočíselný typ nebude schopen reprezentovat následující časová razítka.
Nejčastěji ovlivněny jsou starší systémy nebo software využívající 32bitový typ time_t. Moderní systémy obvykle používají 64bitové typy (například 64bitové celé číslo v milisekundách), takže tento problém neplatí.
Doporučujeme používat 64bitová časová razítka nebo knihovny pro práci s daty, které podporují velký rozsah datumů.
Jak získat/převést časové razítko prostřednictvím programovacího jazyka
Math.floor(Date.now() / 1000); // seconds
Date.now(); // milliseconds
new Date(1735689600 * 1000).toISOString();
new Date('2025-01-01T00:00:00Z').getTime();
time(); // seconds
intval(microtime(true) * 1000); // milliseconds
date('Y-m-d H:i:s', 1735689600);
strtotime('2025-01-01 00:00:00');
import time
int(time.time()) # seconds
int(time.time() * 1000) # milliseconds
import datetime
datetime.datetime.utcfromtimestamp(1735689600).isoformat()
import datetime
int(datetime.datetime(2025,1,1,0,0,0,tzinfo=datetime.timezone.utc).timestamp())
import "time"
time.Now().Unix() // seconds
time.Now().UnixMilli() // milliseconds
import "time"
time.Unix(1735689600, 0).UTC().Format(time.RFC3339)
import "time"
ts := time.Date(2025,1,1,0,0,0,0,time.UTC).Unix()
use chrono::Utc;
let now = Utc::now();
let sec = now.timestamp(); // seconds i64
let ms = now.timestamp_millis(); // milliseconds i128
use chrono::{DateTime, NaiveDateTime, Utc};
let dt: DateTime = NaiveDateTime::from_timestamp_opt(1735689600, 0)
.unwrap()
.and_utc();
let iso = dt.to_rfc3339();
use chrono::DateTime;
let ts = DateTime::parse_from_rfc3339("2025-01-01T00:00:00Z")
.unwrap()
.timestamp();
-- MySQL / MariaDB
SELECT UNIX_TIMESTAMP();
-- PostgreSQL
SELECT EXTRACT(EPOCH FROM NOW())::bigint;
-- SQLite
SELECT strftime('%s', 'now');
-- MySQL / MariaDB
SELECT FROM_UNIXTIME(1735689600);
-- PostgreSQL
SELECT to_timestamp(1735689600) AT TIME ZONE 'UTC';
-- SQLite
SELECT datetime(1735689600, 'unixepoch');
-- MySQL / MariaDB
SELECT UNIX_TIMESTAMP('2025-01-01 00:00:00');
-- PostgreSQL
SELECT EXTRACT(EPOCH FROM TIMESTAMP '2025-01-01 00:00:00+00')::bigint;
-- SQLite
SELECT strftime('%s', '2025-01-01 00:00:00');