UNIX Laika Zīmogu Pārveidotājs - Konvertēt Datumu | Bezmaksas

Pašreizējais UNIX laika zīmogs

Sekundes
Milisekundes

Laika zīmogs → Datums un laiks


Datums un laiks → Laika zīmogs

UNIX Laika Zīmogu Pārveidotājs (tiešsaistes UNIX laika pārveidotājs)

Šis UNIX laika zīmogu pārveidotājs ļauj ātri pārveidot UNIX laiku (epoch time / POSIX time) par datumu un laiku un otrādi. Tas atbalsta laika zīmogus gan sekundēs, gan milisekundēs, parāda vietējo laiku, UTC un ISO 8601, un rezultātus var nokopēt ar vienu klikšķi.


Kas ir UNIX laika zīmogs (epoch time / POSIX time)?

UNIX laika zīmogs ir skaitlis, kas izsaka laiku kā sekunžu skaitu kopš 1970. gada 1. janvāra 00:00:00 UTC (t.s. UNIX ēra). Praksē tas ir viens no visbiežāk izmantotajiem datuma un laika glabāšanas un pārsūtīšanas formātiem sistēmās, datubāzēs, API un žurnālos.

Piemērs: 1700000000 atbilst datumam 2023. gada 14. novembrim 22:13:20 UTC.

Kāpēc tieši 1970. gada 1. janvāris?

Ēras sākums (1970-01-01) tika izvēlēts UNIX projektēšanas laikā kā praktisks atskaites punkts: tas ir tuvu sistēmas izveides periodam un nodrošina vienkāršus laika aprēķinus.


UNIX laika zīmogs sekundēs pret milisekundēs

UNIX laika zīmogs visbiežāk sastopams divos veidos:

Laika zīmoga formātsPiemērsTipiskā izmantošana
Sekundes (s)1700000000datubāzes, aizmugursistēmas, API, faili
Milisekundes (ms)1700000000000JavaScript (Date.now()), analīze, detalizēti žurnāli

Kā atpazīt, kas jums ir?

  • Sekundēm „mūsdienu“ datos parasti ir 10 cipari.
  • Milisekundēm parasti ir 13 cipari un tās ir aptuveni 1000 reizes lielākas.
  • Aptuveni: ja vērtība ir > 10¹², tas gandrīz noteikti ir milisekundes.

Kā lietot UNIX laika zīmogu pārveidotāju

1) Laika zīmogs → Datums un laiks

  1. Ievadiet UNIX laika zīmogu laukā vai noklikšķiniet uz Tagad (pašreizējais UNIX laiks).
  2. Ja laika zīmogs ir milisekundēs, aktivizējiet opciju Milisekundes.
  3. Noklikšķiniet uz Pārveidot (vai nospiediet Enter).
  4. Tiks parādīts pārveidojums uz vietējo laiku, UTC un ISO 8601.
  5. Noklikšķinot uz rezultāta, tas tiks nokopēts starpliktuvē.

2) Datums un laiks → Laika zīmogs

  1. Izvēlieties datumu un laiku veidlapā.
  2. Noklikšķiniet uz Pārveidot.
  3. Rezultātu saņemsiet kā laika zīmogu gan sekundēs, gan milisekundēs.

Kur UNIX laika zīmogs tiek izmantots visbiežāk?

UNIX laiku var sastapt praktiski visur, kur IT tiek strādāts ar laiku:

  • Datubāzes – laika glabāšana un salīdzināšana MySQL, PostgreSQL, SQLite u.c.
  • API – REST/GraphQL bieži atgriež laiku kā laika zīmogu (vienkārša serializācija).
  • Žurnāli un uzraudzība – precīza notikumu secība laikā.
  • Git – “commit” ieraksti satur laika datus.
  • Failu sistēmas – laiki, piemēram, mtime/ctime/atime (pēdējās izmaiņas u.c.).
  • JWT – “claim” vērtības iat (izsniegts plkst.) un exp (derīgs līdz) parasti ir ēras sekundēs.
  • Linux/Unix čauladate +%s atgriež pašreizējo laika zīmogu.
  • JavaScriptDate.now() atgriež laiku milisekundēs.

Praktiski UNIX laika konvertēšanas piemēri

JavaScript (timestamp ↔ datums)

// Pašreizējais UNIX laika zīmogs sekundēs
const tsSeconds = Math.floor(Date.now() / 1000);

// Pašreizējais laika zīmogs milisekundēs
const tsMs = Date.now();

// Laika zīmogs (s) -> datums
const dateFromSeconds = new Date(1700000000 * 1000);
console.log(dateFromSeconds.toISOString());

// Datums -> laika zīmogs (s)
const ts = Math.floor(new Date("2024-01-01T00:00:00Z").getTime() / 1000);
console.log(ts);

Python (timestamp ↔ datetime)

import time
from datetime import datetime, timezone

# Pašreizējais laika zīmogs sekundēs
ts = int(time.time())

# Laika zīmogs -> datetime (UTC)
dt_utc = datetime.fromtimestamp(1700000000, tz=timezone.utc)

# Datums -> laika zīmogs
ts2 = int(datetime(2024, 1, 1, tzinfo=timezone.utc).timestamp())

SQL (MySQL)

-- Pašreizējais UNIX laika zīmogs (s)
SELECT UNIX_TIMESTAMP();

-- Laika zīmogs -> datums
SELECT FROM_UNIXTIME(1700000000);

-- Datums -> laika zīmogs
SELECT UNIX_TIMESTAMP('2024-01-01 00:00:00');

Laika joslas: UTC, vietējais laiks un ISO 8601

UNIX laika zīmogs vienmēr ir UTC – tas nesatur informāciju par laika joslu vai vasaras laiku. Pārveidošana uz vietējo laiku ir atkarīga no pārlūkprogrammas, servera vai izmantotās bibliotēkas iestatījumiem.

Termini, kas jāzina:

  • UTC – globālais standarts bez vasaras/ziemas laika.
  • GMT – ikdienas lietošanā praktiski identisks UTC.
  • Nobīde – nobīde attiecībā pret UTC (piem., Rīga UTC+2 ziemā, UTC+3 vasarā).

UNIX laika zīmoga ierobežojumi un 2038. gada problēma

2038. gada problēma (Year 2038 Problem)

Dažās 32 bitu sistēmās laika zīmogs tiek glabāts kā int32 ar maksimālo vērtību 2 147 483 647, kas atbilst 2038. gada 19. janvārim 03:14:07 UTC. Pēc šīs vērtības pārsniegšanas var rasties pārpilde un nepareizs laiks. Mūsdienu 64 bitu sistēmām šī problēma parasti nav.

64 bitu UNIX laika diapazons

64 bitu vērtības aptver ārkārtīgi plašu periodu (praktiski „mūžīgi“). Negatīvas vērtības norāda datumu pirms 1970. gada 1. janvāra.


BUJ – biežāk uzdotie jautājumi par UNIX laika zīmogu

Vai UNIX laika zīmogs ir UTC vai vietējā laikā? UNIX laika zīmogs vienmēr ir UTC. Vietējais laiks rodas tikai pēc pārveidošanas saskaņā ar laika joslu. Tāpēc pārveidotājs parasti parāda gan UTC, gan vietējo laiku.
Kā es varu zināt, vai laika zīmogs ir sekundēs vai milisekundēs? Pašreizējam laikam sekundēs laika zīmogam parasti ir 10 cipari. Milisekundēs tam parasti ir 13 cipari un tas ir aptuveni 1000 reizes lielāks. Aptuveni: vērtība > 10¹² parasti ir milisekundes.
Ko nozīmē negatīvs UNIX laika zīmogs? Negatīvs laika zīmogs apzīmē datumu pirms 1970. gada 1. janvāra. Piemēram, -1 atbilst 1969. gada 31. decembrim 23:59:59 UTC.
Kā pārveidot UNIX laika zīmogu SQL valodā? MySQL lietojiet FROM_UNIXTIME(timestamp) un atpakaļ UNIX_TIMESTAMP(datums). PostgreSQL tas parasti ir TO_TIMESTAMP(timestamp) un EXTRACT(EPOCH FROM datums).
Kāpēc UNIX ēra sākas 1970. gada 1. janvārī? Tas ir vēsturiski izvēlēts atskaites punkts no agrīnajiem UNIX laikiem: vienkāršs, praktisks un tuvs sistēmas izstrādes laikam.