Preveďte unixové časové pečiatky na ľahko čitateľné dátumy a časy. Vyberte si medzi 12-hodinovým a 24-hodinovým formátom pomocou tohto jednoduchého, používateľsky prívetivého prevádzača.
Unixová časová pečiatka (známa aj ako POSIX čas alebo Epoch čas) je systém na opis bodu v čase. Je to počet sekúnd, ktoré uplynuli od 1. januára 1970 (polnoc UTC/GMT), bez započítania prestupných sekúnd. Unixové časové pečiatky sú široko používané v počítačových systémoch a programovacích jazykoch, pretože poskytujú kompaktné, jazykovo nezávislé zobrazenie konkrétneho okamihu v čase.
Tento prevodník časových pečiatok na dátum automaticky detekuje a spracováva časové pečiatky rôznych dĺžok, vrátane mikrosekundovej presnosti (16 číslic), milisekundovej presnosti (13 číslic) a štandardných unixových časových pečiatok (10 číslic). Nástroj identifikuje formát časovej pečiatky na základe dĺžky vstupu, konvertuje ho na ľahko čitateľný dátum a čas a zobrazuje výsledok bez toho, aby používatelia museli špecifikovať typ časovej pečiatky. Podporuje formáty času 12-hodinový (AM/PM) a 24-hodinový, aby vyhovoval rôznym regionálnym a osobným preferenciám.
Unixové časové pečiatky sa počítajú ako počet sekúnd od Unixovej epochy (1. január 1970, 00:00:00 UTC). To ich robí obzvlášť užitočnými pri výpočtoch časových rozdielov a pri uložení dátumov v kompaktnom formáte.
Matematická konverzia z unixovej časovej pečiatky na kalendárny dátum zahŕňa niekoľko krokov:
Napríklad, unixová časová pečiatka 1609459200
predstavuje piatok, 1. január 2021, 00:00:00 UTC.
Konverzný vzorec môže byť vyjadrený ako:
Väčšina programovacích jazykov a operačných systémov poskytuje vstavané funkcie na spracovanie tejto konverzie, čím abstrahuje zložitosti kalendára.
Náš prevodník podporuje tri bežné formáty časových pečiatok, ktoré sú automaticky detekované na základe počtu číslic:
Štandardná unixová časová pečiatka (10 číslic): Predstavuje sekundy od Unixovej epochy. Príklad: 1609459200
(1. január 2021, 00:00:00 UTC)
Mikroskondová presnosť (13 číslic): Predstavuje milisekundy od Unixovej epochy. Príklad: 1609459200000
(1. január 2021, 00:00:00 UTC)
Mikroskondová presnosť (16 číslic): Predstavuje mikrosekundy od Unixovej epochy. Príklad: 1609459200000000
(1. január 2021, 00:00:00 UTC)
Automatická detekcia funguje analýzou dĺžky vstupu:
Táto automatická detekcia eliminuje potrebu, aby používatelia špecifikovali typ časovej pečiatky, čím je nástroj užívateľsky prívetivejší a efektívnejší.
Tento prevodník ponúka dve možnosti formátu času:
24-hodinový formát (niekedy nazývaný "vojenský čas"): Hodiny sa pohybujú od 0 do 23 a neexistuje označenie AM/PM. Napríklad, 15:00 je reprezentované ako 15:00.
12-hodinový formát: Hodiny sa pohybujú od 1 do 12, s AM (ante meridiem) pre časy od polnoci do obeda a PM (post meridiem) pre časy od obeda do polnoci. Napríklad, 15:00 v 24-hodinovom formáte je reprezentované ako 3:00 PM.
Voľba medzi týmito formátmi je do značnej miery otázkou regionálnej konvencie a osobných preferencií:
Pri práci s unixovými časovými pečiatkami rôznych presností je dôležité byť si vedomý niekoľkých okrajových prípadov a obmedzení:
Negatívne časové pečiatky: Tieto predstavujú dátumy pred Unixovou epochou (1. január 1970). Hoci sú matematicky platné, niektoré systémy nemusia správne spracovať negatívne časové pečiatky. To platí pre všetky tri formáty časových pečiatok.
Problém roku 2038: Štandardné unixové časové pečiatky (10 číslic) sa často ukladajú ako 32-bitové celé čísla, ktoré sa preplnia 19. januára 2038. Po tomto bode nebudú 32-bitové systémy schopné správne reprezentovať časy, pokiaľ nebudú upravené na použitie väčšieho typu celého čísla.
Úvahy o presnosti:
Extrémne veľké časové pečiatky: Veľmi vzdialené budúce dátumy nemusia byť reprezentovateľné v niektorých systémoch alebo môžu byť spracované nekonzistentne. To je obzvlášť relevantné pre milisekundové a mikrosekundové časové pečiatky, ktoré používajú väčšie číselné hodnoty.
Prestupné sekundy: Unixový čas nezohľadňuje prestupné sekundy, ktoré sa občas pridávajú do UTC na kompenzáciu nepravidelnej rotácie Zeme. To znamená, že unixový čas nie je presne synchronizovaný s astronomickým časom.
Úvahy o časových pásmach: Unixové časové pečiatky predstavujú okamihy v UTC. Pre konverziu na miestny čas je potrebné dodatočné informácie o časovom pásme.
Letný čas: Pri konverzii časových pečiatok na miestny čas je potrebné zohľadniť zložitosti prechodu na letný čas.
Zmätenie formátu časovej pečiatky: Bez správnej detekcie môže byť 13-ciferná milisekundová časová pečiatka nesprávne interpretovaná ako veľmi vzdialený budúci dátum, ak sa považuje za časovú pečiatku založenú na sekundách. Náš prevodník tomu zabraňuje automatickou detekciou formátu na základe dĺžky číslic.
Unixové časové pečiatky rôznych presností sa používajú v mnohých aplikáciách naprieč počítačmi a správou dát:
Záznamy v databázach: Časové pečiatky sa bežne používajú na zaznamenávanie, kedy boli záznamy vytvorené alebo upravené.
Webový vývoj: HTTP hlavičky, cookies a mechanizmy cache často používajú unixové časové pečiatky.
Date.now()
v JavaScripte vracia milisekundové časové pečiatky (13 číslic).Logovacie súbory: Systémové logy typicky zaznamenávajú udalosti s unixovými časovými pečiatkami pre presné chronologické usporiadanie.
Systémy správy verzií: Git a iné systémy správy verzií používajú časové pečiatky na zaznamenávanie, kedy boli vykonané zmeny.
API odpovede: Mnohé webové API obsahujú časové pečiatky vo svojich odpovediach na označenie, kedy boli dáta generované alebo kedy boli zdroje naposledy upravené.
Súborové systémy: Časy vytvorenia a úpravy súborov sa často ukladajú ako unixové časové pečiatky.
Správa relácií: Webové aplikácie používajú časové pečiatky na určenie, kedy by sa mali relácie používateľov vypršať.
Analýza dát: Časové pečiatky poskytujú štandardizovaný spôsob práce s časovými údajmi v analytických aplikáciách.
Obchodovanie s vysokou frekvenciou: Finančné systémy často vyžadujú mikrosekundovú presnosť (16 číslic) na presné usporiadanie transakcií.
Vedecké merania: Výskumné zariadenia môžu zaznamenávať pozorovania s mikrosekundovou presnosťou pre presnú časovú analýzu.
Hoci unixové časové pečiatky sú široko používané, existujú alternatívne formáty časového zobrazenia, ktoré môžu byť vhodnejšie v určitých kontextoch:
ISO 8601: Štandardizovaný reťazcový formát (napr. "2021-01-01T00:00:00Z"), ktorý je ľahko čitateľný a zároveň zachováva triediteľnosť. Často sa preferuje pre výmenu dát a aplikácie orientované na používateľov.
RFC 3339: Profil ISO 8601 používaný v internetových protokoloch, s prísnejšími požiadavkami na formátovanie.
Ľahko čitateľné formáty: Lokalizované dátové reťazce (napr. "1. január 2021") sú vhodnejšie pre priamu interakciu s používateľom, ale menej vhodné na výpočty.
Microsoft FILETIME: 64-bitová hodnota predstavujúca počet intervalov 100 nanosekúnd od 1. januára 1601, používaná v systémoch Windows.
Juliánske číslo dňa: Používa sa v astronómii a niektorých vedeckých aplikáciách, počítajúc dni od 1. januára 4713 pred naším letopočtom.
Voľba formátu času závisí od faktorov, ako sú:
Koncept unixového času vznikol pri vývoji operačného systému Unix v Bell Labs na konci 60. a začiatku 70. rokov. Rozhodnutie použiť 1. január 1970 ako epochu bolo do istej miery náhodné, ale praktické pre daný čas – bolo dostatočne nedávne, aby minimalizovalo požiadavky na ukladanie dátumov, ale dostatočne vzdialené v minulosti, aby bolo užitočné pre historické dáta.
Pôvodná implementácia používala 32-bitové celé číslo na ukladanie počtu sekúnd, čo bolo dostatočné pre očakávanú životnosť unixových systémov v tom čase. Toto rozhodnutie však viedlo k problému roku 2038 (niekedy nazývanému "Y2K38" alebo "Unix Millennium Bug"), pretože 32-bitové celé čísla môžu reprezentovať len dátumy do 19. januára 2038.
Keď sa počítačové potreby vyvíjali, stala sa potrebná vyššia presnosť časových pečiatok:
Milisekundová presnosť (13 číslic) sa stala bežnou s nástupom interaktívneho počítačovania a potrebou merať reakčný čas používateľského rozhrania.
Mikroskondová presnosť (16 číslic) sa objavila s vysokovýkonnými počítačovými aplikáciami a systémami vyžadujúcimi extrémne presné časovanie.
Keď sa unixové a unixovým podobné operačné systémy stali populárnymi, unixová časová pečiatka sa stala de facto štandardom pre reprezentáciu času v počítačoch. Bola prijatá mnohými programovacími jazykmi, databázami a aplikáciami, pričom sa rozšírila ďaleko za svoj pôvodný unixový prostredie.
Moderné systémy čoraz častejšie používajú 64-bitové celé čísla pre časové pečiatky, čo rozširuje reprezentovateľný rozsah na približne 292 miliárd rokov v oboch smeroch od epochy, efektívne riešiac problém roku 2038. Avšak staršie systémy a aplikácie môžu byť stále zraniteľné.
Jednoduchosť a užitočnosť unixovej časovej pečiatky zabezpečili jej pokračujúcu relevantnosť napriek vývoju sofistikovanejších formátov reprezentácie času. Zostáva základným konceptom v počítačoch, ktorý podporuje veľkú časť našej digitálnej infraštruktúry.
Tu sú príklady, ako konvertovať unixové časové pečiatky rôznych presností na ľahko čitateľné dátumy v rôznych programovacích jazykoch:
1// Konverzia časovej pečiatky v JavaScripte s automatickou detekciou formátu
2function convertTimestamp(timestamp, use12Hour = false) {
3 // Prevod reťazca na číslo, ak je to potrebné
4 const numericTimestamp = Number(timestamp);
5
6 // Detekcia formátu časovej pečiatky na základe dĺžky číslic
7 let date;
8 if (timestamp.length === 16) {
9 // Mikroskondová presnosť (delenie 1 000 000, aby sa dostali sekundy)
10 date = new Date(numericTimestamp / 1000);
11 console.log("Detekované: Mikroskondová presnosť časovej pečiatky");
12 } else if (timestamp.length === 13) {
13 // Milisekundová presnosť
14 date = new Date(numericTimestamp);
15 console.log("Detekované: Milisekundová presnosť časovej pečiatky");
16 } else if (timestamp.length === 10) {
17 // Štandardná unixová časová pečiatka (sekundy)
18 date = new Date(numericTimestamp * 1000);
19 console.log("Detekované: Štandardná unixová časová pečiatka (sekundy)");
20 } else {
21 throw new Error("Neplatný formát časovej pečiatky. Očakávané 10, 13 alebo 16 číslic.");
22 }
23
24 // Možnosti formátovania
25 const options = {
26 year: 'numeric',
27 month: 'long',
28 day: 'numeric',
29 weekday: 'long',
30 hour: use12Hour ? 'numeric' : '2-digit',
31 minute: '2-digit',
32 second: '2-digit',
33 hour12: use12Hour
34 };
35
36 // Prevod na reťazec pomocou formátovania miestneho jazyka
37 return date.toLocaleString(undefined, options);
38}
39
40// Príklad použitia
41try {
42 // Štandardná unixová časová pečiatka (10 číslic)
43 console.log(convertTimestamp("1609459200", false));
44
45 // Milisekundová presnosť (13 číslic)
46 console.log(convertTimestamp("1609459200000", false));
47
48 // Mikroskondová presnosť (16 číslic)
49 console.log(convertTimestamp("1609459200000000", true));
50} catch (error) {
51 console.error(error.message);
52}
53
1# Konverzia časovej pečiatky v Pythone s automatickou detekciou formátu
2import datetime
3
4def convert_timestamp(timestamp, use_12hour=False):
5 # Prevod na celé číslo
6 timestamp = str(timestamp).strip()
7 numeric_timestamp = int(timestamp)
8
9 # Detekcia formátu časovej pečiatky na základe dĺžky číslic
10 if len(timestamp) == 16:
11 # Mikroskondová presnosť (delenie 1 000 000, aby sa dostali sekundy)
12 date = datetime.datetime.fromtimestamp(numeric_timestamp / 1000000)
13 print("Detekované: Mikroskondová presnosť časovej pečiatky")
14 elif len(timestamp) == 13:
15 # Milisekundová presnosť (delenie 1 000, aby sa dostali sekundy)
16 date = datetime.datetime.fromtimestamp(numeric_timestamp / 1000)
17 print("Detekované: Milisekundová presnosť časovej pečiatky")
18 elif len(timestamp) == 10:
19 # Štandardná unixová časová pečiatka (sekundy)
20 date = datetime.datetime.fromtimestamp(numeric_timestamp)
21 print("Detekované: Štandardná unixová časová pečiatka (sekundy)")
22 else:
23 raise ValueError("Neplatný formát časovej pečiatky. Očakávané 10, 13 alebo 16 číslic.")
24
25 # Formátovanie reťazca dátumu
26 if use_12hour:
27 format_string = "%A, %B %d, %Y %I:%M:%S %p" # 12-hodinový formát s AM/PM
28 else:
29 format_string = "%A, %B %d, %Y %H:%M:%S" # 24-hodinový formát
30
31 return date.strftime(format_string)
32
33# Príklad použitia
34try:
35 # Štandardná unixová časová pečiatka (10 číslic)
36 print(convert_timestamp("1609459200", False))
37
38 # Milisekundová presnosť (13 číslic)
39 print(convert_timestamp("1609459200000", False))
40
41 # Mikroskondová presnosť (16 číslic)
42 print(convert_timestamp("1609459200000000", True))
43except ValueError as e:
44 print(e)
45
1<?php
2// Konverzia časovej pečiatky v PHP s automatickou detekciou formátu
3function convertTimestamp($timestamp, $use12Hour = false) {
4 // Zabezpečiť, aby časová pečiatka bola reťazec pre kontrolu dĺžky
5 $timestamp = trim((string)$timestamp);
6
7 // Detekcia formátu časovej pečiatky na základe dĺžky číslic
8 if (strlen($timestamp) === 16) {
9 // Mikroskondová presnosť (delenie 1 000 000, aby sa dostali sekundy)
10 $seconds = $numericTimestamp / 1000000;
11 echo "Detekované: Mikroskondová presnosť časovej pečiatky\n";
12 } elseif (strlen($timestamp) === 13) {
13 // Milisekundová presnosť
14 $seconds = $numericTimestamp / 1000;
15 echo "Detekované: Milisekundová presnosť časovej pečiatky\n";
16 } elseif (strlen($timestamp) === 10) {
17 // Štandardná unixová časová pečiatka (sekundy)
18 $seconds = $numericTimestamp;
19 echo "Detekované: Štandardná unixová časová pečiatka (sekundy)\n";
20 } else {
21 throw new Exception("Neplatný formát časovej pečiatky. Očakávané 10, 13 alebo 16 číslic.");
22 }
23
24 // Formátovací reťazec
25 $formatString = $use12Hour
26 ? 'l, F j, Y g:i:s A' // 12-hodinový formát s AM/PM
27 : 'l, F j, Y H:i:s'; // 24-hodinový formát
28
29 // Prevod a formátovanie dátumu
30 return date($formatString, $seconds);
31}
32
33// Príklad použitia
34try {
35 // Štandardná unixová časová pečiatka (10 číslic)
36 echo convertTimestamp("1609459200", false) . "\n";
37
38 // Milisekundová presnosť (13 číslic)
39 echo convertTimestamp("1609459200000", false) . "\n";
40
41 // Mikroskondová presnosť (16 číslic)
42 echo convertTimestamp("1609459200000000", true) . "\n";
43} catch (Exception $e) {
44 echo $e->getMessage() . "\n";
45}
46?>
47
1// Konverzia časovej pečiatky v Jave s automatickou detekciou formátu
2import java.time.Instant;
3import java.time.LocalDateTime;
4import java.time.ZoneId;
5import java.time.format.DateTimeFormatter;
6
7public class TimestampConverter {
8 public static String convertTimestamp(String timestamp, boolean use12Hour) {
9 // Orezanie vstupu
10 timestamp = timestamp.trim();
11
12 // Detekcia formátu časovej pečiatky na základe dĺžky číslic
13 LocalDateTime dateTime;
14 if (timestamp.length() == 16) {
15 // Mikroskondová presnosť (delenie 1 000 000, aby sa dostali sekundy)
16 long microseconds = Long.parseLong(timestamp);
17 Instant instant = Instant.ofEpochSecond(0, microseconds * 1000); // Konverzia na nanosekundy
18 dateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
19 System.out.println("Detekované: Mikroskondová presnosť časovej pečiatky");
20 } else if (timestamp.length() == 13) {
21 // Milisekundová presnosť
22 long milliseconds = Long.parseLong(timestamp);
23 Instant instant = Instant.ofEpochMilli(milliseconds);
24 dateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
25 System.out.println("Detekované: Milisekundová presnosť časovej pečiatky");
26 } else if (timestamp.length() == 10) {
27 // Štandardná unixová časová pečiatka (sekundy)
28 long seconds = Long.parseLong(timestamp);
29 Instant instant = Instant.ofEpochSecond(seconds);
30 dateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
31 System.out.println("Detekované: Štandardná unixová časová pečiatka (sekundy)");
32 } else {
33 throw new IllegalArgumentException("Neplatný formát časovej pečiatky. Očakávané 10, 13 alebo 16 číslic.");
34 }
35
36 // Vytvorenie formátovača na základe požadovaného formátu
37 DateTimeFormatter formatter = DateTimeFormatter.ofPattern(
38 use12Hour ? "EEEE, MMMM d, yyyy h:mm:ss a" : "EEEE, MMMM d, yyyy HH:mm:ss"
39 );
40
41 // Formátovanie dátumu
42 return dateTime.format(formatter);
43 }
44
45 public static void main(String[] args) {
46 try {
47 // Štandardná unixová časová pečiatka (10 číslic)
48 System.out.println(convertTimestamp("1609459200", false));
49
50 // Milisekundová presnosť (13 číslic)
51 System.out.println(convertTimestamp("1609459200000", false));
52
53 // Mikroskondová presnosť (16 číslic)
54 System.out.println(convertTimestamp("1609459200000000", true));
55 } catch (IllegalArgumentException e) {
56 System.err.println(e.getMessage());
57 }
58 }
59}
60
1// Konverzia časovej pečiatky v C# s automatickou detekciou formátu
2using System;
3
4class TimestampConverter
5{
6 public static string ConvertTimestamp(string timestamp, bool use12Hour)
7 {
8 // Orezanie vstupu
9 timestamp = timestamp.Trim();
10
11 // Detekcia formátu časovej pečiatky na základe dĺžky číslic
12 DateTime dateTime;
13 if (timestamp.Length == 16)
14 {
15 // Mikroskondová presnosť (delenie 1 000 000, aby sa dostali sekundy)
16 if (!double.TryParse(timestamp, out double microseconds))
17 throw new ArgumentException("Neplatný formát časovej pečiatky");
18
19 // Konverzia mikrosekúnd na DateTime
20 dateTime = DateTimeOffset.FromUnixTimeSeconds(0).DateTime.AddSeconds(microseconds / 1000000);
21 Console.WriteLine("Detekované: Mikroskondová presnosť časovej pečiatky");
22 }
23 else if (timestamp.Length == 13)
24 {
25 // Milisekundová presnosť
26 if (!long.TryParse(timestamp, out long milliseconds))
27 throw new ArgumentException("Neplatný formát časovej pečiatky");
28
29 dateTime = DateTimeOffset.FromUnixTimeMilliseconds(milliseconds).DateTime;
30 Console.WriteLine("Detekované: Milisekundová presnosť časovej pečiatky");
31 }
32 else if (timestamp.Length == 10)
33 {
34 // Štandardná unixová časová pečiatka (sekundy)
35 if (!long.TryParse(timestamp, out long seconds))
36 throw new ArgumentException("Neplatný formát časovej pečiatky");
37
38 dateTime = DateTimeOffset.FromUnixTimeSeconds(seconds).DateTime;
39 Console.WriteLine("Detekované: Štandardná unixová časová pečiatka (sekundy)");
40 }
41 else
42 {
43 throw new ArgumentException("Neplatný formát časovej pečiatky. Očakávané 10, 13 alebo 16 číslic.");
44 }
45
46 // Formátovací reťazec na základe preferencie 12-hodinového alebo 24-hodinového
47 string formatString = use12Hour
48 ? "dddd, MMMM d, yyyy h:mm:ss tt" // 12-hodinový formát s AM/PM
49 : "dddd, MMMM d, yyyy HH:mm:ss"; // 24-hodinový formát
50
51 // Vrátiť formátovaný reťazec dátumu
52 return dateTime.ToString(formatString);
53 }
54
55 static void Main()
56 {
57 try
58 {
59 // Štandardná unixová časová pečiatka (10 číslic)
60 Console.WriteLine(ConvertTimestamp("1609459200", false));
61
62 // Milisekundová presnosť (13 číslic)
63 Console.WriteLine(ConvertTimestamp("1609459200000", false));
64
65 // Mikroskondová presnosť (16 číslic)
66 Console.WriteLine(ConvertTimestamp("1609459200000000", true));
67 }
68 catch (ArgumentException e)
69 {
70 Console.WriteLine(e.Message);
71 }
72 }
73}
74
Pri práci s unixovými časovými pečiatkami rôznych presností je dôležité správne riešiť okrajové prípady. Tu je príklad, ktorý demonštruje komplexné spracovanie okrajových prípadov:
1// JavaScript komplexné riešenie okrajových prípadov pre viacero formátov časových pečiatok
2function safeConvertTimestamp(timestamp, use12Hour = false) {
3 // Validácia vstupu
4 if (timestamp === undefined || timestamp === null || timestamp === '') {
5 return "Chyba: Prázdna alebo nedefinovaná časová pečiatka";
6 }
7
8 // Zabezpečiť, aby časová pečiatka bola reťazec pre kontrolu dĺžky
9 const timestampStr = String(timestamp).trim();
10
11 // Skontrolovať, či časová pečiatka obsahuje iba číslice
12 if (!/^\d+$/.test(timestampStr)) {
13 return "Chyba: Časová pečiatka musí obsahovať iba číslice";
14 }
15
16 // Detekcia formátu na základe dĺžky
17 let date;
18 try {
19 if (timestampStr.length === 16) {
20 // Mikroskondová presnosť
21 const microseconds = Number(timestampStr);
22 date = new Date(microseconds / 1000); // Konverzia na milisekundy
23 console.log("Spracovávanie mikroskondovej časovej pečiatky (16 číslic)");
24
25 // Skontrolovať neplatný dátum
26 if (isNaN(date.getTime())) {
27 return "Chyba: Neplatná mikroskondová časová pečiatka";
28 }
29 } else if (timestampStr.length === 13) {
30 // Milisekundová presnosť
31 const milliseconds = Number(timestampStr);
32 date = new Date(milliseconds);
33 console.log("Spracovávanie milisekundovej časovej pečiatky (13 číslic)");
34
35 // Skontrolovať neplatný dátum
36 if (isNaN(date.getTime())) {
37 return "Chyba: Neplatná milisekundová časová pečiatka";
38 }
39 } else if (timestampStr.length === 10) {
40 // Štandardná unixová časová pečiatka (sekundy)
41 const seconds = Number(timestampStr);
42 date = new Date(seconds * 1000);
43 console.log("Spracovávanie štandardnej časovej pečiatky (10 číslic)");
44
45 // Skontrolovať neplatný dátum
46 if (isNaN(date.getTime())) {
47 return "Chyba: Neplatná štandardná časová pečiatka";
48 }
49
50 // Skontrolovať problém roku 2038 (pre 32-bitové systémy)
51 const maxInt32 = 2147483647; // Maximálna hodnota pre 32-bitové celé číslo
52 if (seconds > maxInt32) {
53 console.warn("Upozornenie: Časová pečiatka presahuje limit 32-bitového celého čísla (problém Y2K38)");
54 }
55 } else {
56 return "Chyba: Neplatná dĺžka časovej pečiatky. Očakávané 10, 13 alebo 16 číslic.";
57 }
58
59 // Formátovanie dátumu
60 const options = {
61 year: 'numeric',
62 month: 'long',
63 day: 'numeric',
64 weekday: 'long',
65 hour: use12Hour ? 'numeric' : '2-digit',
66 minute: '2-digit',
67 second: '2-digit',
68 hour12: use12Hour
69 };
70
71 return date.toLocaleString(undefined, options);
72 } catch (error) {
73 return "Chyba pri konverzii časovej pečiatky: " + error.message;
74 }
75}
76
77// Testovanie s rôznymi okrajovými prípadmi
78console.log(safeConvertTimestamp("1609459200")); // Štandardná (10 číslic)
79console.log(safeConvertTimestamp("1609459200000")); // Milisekundy (13 číslic)
80console.log(safeConvertTimestamp("1609459200000000")); // Mikroskondy (16 číslic)
81console.log(safeConvertTimestamp("abc123")); // Nečíselné
82console.log(safeConvertTimestamp("12345")); // Neplatná dĺžka
83console.log(safeConvertTimestamp("9999999999999999")); // Veľmi veľká mikroskondová časová pečiatka
84console.log(safeConvertTimestamp("")); // Prázdny reťazec
85
Unixová časová pečiatka je počet sekúnd, ktoré uplynuli od 1. januára 1970 (polnoc UTC/GMT), bez započítania prestupných sekúnd. Poskytuje kompaktné, jazykovo nezávislé zobrazenie konkrétneho okamihu v čase.
Prevodník automaticky detekuje formát časovej pečiatky na základe počtu číslic:
Milisekundová presnosť (13 číslic) je užitočná pre aplikácie vyžadujúce presnejšie časovanie, ako sú monitorovanie výkonu, sledovanie interakcií používateľov a niektoré finančné aplikácie. Mikroskondová presnosť (16 číslic) je potrebná pre vysokovýkonné počítačové aplikácie, vedecké aplikácie a systémy obchodovania s vysokou frekvenciou, kde je kritické extrémne presné časovanie.
Áno, dátumy pred 1. januárom 1970 sú reprezentované pomocou negatívnych časových pečiatok. Niektoré systémy však nemusia správne spracovať negatívne časové pečiatky, preto je dôležité otestovať túto funkčnosť, ak potrebujete pracovať s historickými dátami.
Problém roku 2038 nastáva, pretože mnohé systémy ukladajú unixové časové pečiatky ako 32-bitové celé čísla, ktoré môžu reprezentovať len dátumy do 19. januára 2038 (03:14:07 UTC). Po tomto bode sa celé číslo preplní, čo môže potenciálne spôsobiť zlyhanie systému. Moderné systémy čoraz častejšie používajú 64-bitové celé čísla, aby sa tomuto problému vyhli.
Unixové časové pečiatky sú vždy v UTC (Koordinovaný svetový čas). Na konverziu do konkrétneho časového pásma je potrebné aplikovať príslušný posun po konverzii časovej pečiatky na dátum. Väčšina programovacích jazykov poskytuje vstavané funkcie na spracovanie konverzií časových pásiem.
Unixový čas je číselné zobrazenie (sekundy od epochy), zatiaľ čo ISO 8601 je reťazcový formát (napr. "2021-01-01T00:00:00Z"). Unixový čas je kompaktný a jednoduchší na použitie pri výpočtoch, zatiaľ čo ISO 8601 je viac ľahko čitateľný a sebaopísujúci.
Štandardné unixové časové pečiatky majú presnosť na úrovni sekundy. Pre aplikácie vyžadujúce väčšiu presnosť poskytujú milisekundové časové pečiatky (13 číslic) presnosť na 1/1000 sekundy a mikroskondové časové pečiatky (16 číslic) presnosť na 1/1 000 000 sekundy.
Nie, unixový čas je definovaný ako počet sekúnd od epochy, bez započítania prestupných sekúnd. To znamená, že počas prestupnej sekundy sa unixová časová pečiatka nezvýši. To môže spôsobiť problémy v aplikáciách vyžadujúcich presný astronomický čas.
Áno, unixové časové pečiatky sa široko používajú na plánovanie. Avšak pre veľmi vzdialené budúce dátumy buďte si vedomí potenciálnych obmedzení, ako je problém roku 2038 pre 32-bitové systémy a spracovanie zmien časových pásiem a prechodov na letný čas.
"Unix Time." Wikipedia, Wikimedia Foundation, https://en.wikipedia.org/wiki/Unix_time
"Problém roku 2038." Wikipedia, Wikimedia Foundation, https://en.wikipedia.org/wiki/Year_2038_problem
Olson, Arthur David. "Zložitosti kalendárneho času." The Open Group, https://www.usenix.org/legacy/events/usenix01/full_papers/olson/olson.pdf
"ISO 8601." Wikipedia, Wikimedia Foundation, https://en.wikipedia.org/wiki/ISO_8601
"RFC 3339: Dátum a čas na internete: Časové pečiatky." Internet Engineering Task Force (IETF), https://tools.ietf.org/html/rfc3339
Kernighan, Brian W., a Dennis M. Ritchie. "Programovací jazyk C." Prentice Hall, 1988.
"Presné časovanie v vysokovýkonnom počítačovaní." ACM Computing Surveys, https://dl.acm.org/doi/10.1145/3232678
"Reprezentácia času vo finančných systémoch." Journal of Financial Technology, https://www.fintech-journal.com/time-representation
Skúste náš prevodník časových pečiatok teraz, aby ste ľahko konvertovali unixové časové pečiatky akejkoľvek presnosti na ľahko čitateľné dátumy. Či už pracujete so štandardnými unixovými časovými pečiatkami, milisekundovou presnosťou alebo mikrosekundovou presnosťou, náš nástroj automaticky detekuje formát a poskytuje presné konverzie.
Objavte ďalšie nástroje, ktoré by mohli byť užitočné pre vašu pracovnú postupnosť