🛠️

Whiz Tools

Build • Create • Innovate

Pretvarač Unix vremenskih oznaka u datum: Podrška za 12/24-satni format

Pretvorite Unix vremenske oznake u ljudski čitljive datume i vremena. Odaberite između 12-satnog i 24-satnog formata s ovim jednostavnim, korisnički prijateljskim alatom za pretvorbu.

Konverter Unix vremenskog oznaka

الطابع الزمني يونكس هو عدد الثواني منذ 1 يناير 1970 (UTC)

Konvertirani datum i vrijeme

📚

Dokumentacija

Unix Timestamp Converter

Uvod

Unix timestamp (poznat i kao POSIX vrijeme ili Epoch vrijeme) je sustav za opisivanje trenutka u vremenu. To je broj sekundi koji su prošli od 1. siječnja 1970. (ponoć UTC/GMT), ne računajući prijestupne sekunde. Unix timestampi se široko koriste u računalnim sustavima i programskim jezicima jer pružaju kompaktno, jezikom neovisno predstavljanje određenog trenutka u vremenu.

Ovaj konverter omogućuje vam pretvorbu Unix timestamp-a u ljudski čitljiv datum i vrijeme. Podržava i 12-satni (AM/PM) i 24-satni format vremena kako bi se zadovoljile različite regionalne i osobne preferencije.

Kako Unix Timestamps Funkcioniraju

Unix timestampi se računaju kao broj sekundi od Unix Epoch (1. siječnja 1970., 00:00:00 UTC). To ih čini posebno korisnima za izračunavanje vremenskih razlika i za pohranu datuma u kompaktom formatu.

Matematička konverzija iz Unix timestamp-a u kalendarski datum uključuje nekoliko koraka:

  1. Počnite s Unix Epoch (1. siječnja 1970., 00:00:00 UTC)
  2. Dodajte broj sekundi u timestamp-u
  3. Uzmite u obzir prijestupne godine, varijabilne duljine mjeseci i druge kalendarske složenosti
  4. Primijenite prilagodbe vremenskoj zoni ako je potrebno

Na primjer, Unix timestamp 1609459200 predstavlja petak, 1. siječnja 2021., 00:00:00 UTC.

Formula za konverziju može se izraziti kao:

Datum=Unix Epoch+Timestamp (u sekundama)\text{Datum} = \text{Unix Epoch} + \text{Timestamp (u sekundama)}

Većina programskih jezika i operativnih sustava pruža ugrađene funkcije za rukovanje ovom konverzijom, apstrahirajući složene kalendarske izračune.

Opcije Formata Vremena

Ovaj konverter nudi dvije opcije formata vremena:

  1. 24-satni format (ponekad nazvan "vojni čas"): Sati se kreću od 0 do 23, a nema AM/PM oznake. Na primjer, 15:00 se prikazuje kao 15:00.

  2. 12-satni format: Sati se kreću od 1 do 12, s AM (ante meridiem) za vrijeme od ponoći do podneva, i PM (post meridiem) za vrijeme od podneva do ponoći. Na primjer, 15:00 u 24-satnom formatu prikazuje se kao 3:00 PM.

Izbor između ovih formata uglavnom je pitanje regionalne konvencije i osobne preferencije:

  • 24-satni format se često koristi u većini Europe, Latinskoj Americi i Aziji, kao i u znanstvenim, vojnim i medicinskim kontekstima širom svijeta.
  • 12-satni format je prisutan u Sjedinjenim Američkim Državama, Kanadi, Australiji i nekim drugim engleskim govornim zemljama za svakodnevnu upotrebu.

Rubne Slučajeve i Ograničenja

Kada radite s Unix timestamp-ima, važno je biti svjestan nekoliko rubnih slučajeva i ograničenja:

  1. Negativni timestampi: Oni predstavljaju datume prije Unix Epoch (1. siječnja 1970.). Iako su matematički valjani, neki sustavi možda neće ispravno obraditi negativne timestamp-e.

  2. Problem godine 2038: Unix timestampi se često pohranjuju kao 32-bitni potpisani cijeli brojevi, koji će preopteretiti 19. siječnja 2038. Nakon ove točke, 32-bitni sustavi neće moći ispravno predstavljati vremena osim ako se ne promijene da koriste veći tip cijelog broja.

  3. Ekstremno veliki timestampi: Vrlo daleki budući datumi možda neće biti predstavljivi u nekim sustavima, ili će se možda obraditi nekonzistentno.

  4. Prijestupne sekunde: Unix vrijeme ne uzima u obzir prijestupne sekunde, koje se povremeno dodaju UTC-u kako bi se nadoknadila nepravilna rotacija Zemlje. To znači da Unix vrijeme nije precizno usklađeno s astronomskim vremenom.

  5. Razmatranja vremenskih zona: Unix timestampi predstavljaju trenutke u UTC-u. Pretvaranje u lokalno vrijeme zahtijeva dodatne informacije o vremenskoj zoni.

  6. Ljetno računanje vremena: Kada se timestampi pretvaraju u lokalno vrijeme, treba uzeti u obzir složenosti prijelaza na ljetno računanje vremena.

Upotrebe

Unix timestampi se koriste u brojnim aplikacijama širom računalstva i upravljanja podacima:

  1. Baze podataka: Timestampi se često koriste za bilježenje kada su unosi stvoreni ili izmijenjeni.

  2. Web razvoj: HTTP zaglavlja, kolačići i mehanizmi keširanja često koriste Unix timestamp-e.

  3. Zapisnici: Sustavni zapisi obično bilježe događaje s Unix timestamp-ima radi preciznog kronološkog redoslijeda.

  4. Sustavi za kontrolu verzija: Git i drugi VCS koriste timestamp-e za bilježenje kada su izvršene promjene.

  5. API odgovori: Mnogi web API-ji uključuju timestamp-e u svojim odgovorima kako bi naznačili kada su podaci generirani ili kada su resursi posljednji put izmijenjeni.

  6. Datotečni sustavi: Vrijeme stvaranja i izmjene datoteka često se pohranjuje kao Unix timestamp.

  7. Upravljanje sesijama: Web aplikacije koriste timestamp-e kako bi odredile kada bi korisničke sesije trebale isteći.

  8. Analiza podataka: Timestampi pružaju standardizirani način za rad s vremenskim podacima u analitičkim aplikacijama.

Alternative

Iako su Unix timestampi široko korišteni, postoje alternativni formati vremena koji mogu biti prikladniji u određenim kontekstima:

  1. ISO 8601: Standardizirani string format (npr. "2021-01-01T00:00:00Z") koji je ljudski čitljiv, a istovremeno održava sortabilnost. Često se preferira za razmjenu podataka i korisničke aplikacije.

  2. RFC 3339: Profil ISO 8601 korišten u internet protokolima, s strožim zahtjevima za formatiranje.

  3. Ljudski čitljivi formati: Lokalizirani datumski stringovi (npr. "1. siječnja 2021.") prikladniji su za izravnu interakciju s korisnicima, ali su manje pogodni za izračun.

  4. Microsoft FILETIME: 64-bitna vrijednost koja predstavlja broj intervala od 100 nanosekundi od 1. siječnja 1601., korištena u Windows sustavima.

  5. Julijanski dan: Koristi se u astronomiji i nekim znanstvenim aplikacijama, brojeći dane od 1. siječnja 4713. pr. Kr.

Izbor formata vremena ovisi o faktorima kao što su:

  • Potrebna preciznost
  • Potrebe za ljudskom čitljivošću
  • Ograničenja pohrane
  • Kompatibilnost s postojećim sustavima
  • Raspon datuma koji treba biti predstavljen

Povijest

Koncept Unix vremena nastao je razvojem Unix operativnog sustava u Bell Labs-u krajem 1960-ih i početkom 1970-ih. Odluka da se 1. siječnja 1970. uzme kao epoch bila je donekle proizvoljna, ali praktična za to vrijeme - bila je dovoljno blizu da minimizira zahtjeve za pohranom za datume od interesa, ali dovoljno daleko u prošlosti da bude korisna za povijesne podatke.

Izvorna implementacija koristila je 32-bitni potpisani cijeli broj za pohranu broja sekundi, što je bilo adekvatno za očekivani životni vijek Unix sustava u to vrijeme. Međutim, ova odluka dovela je do Problema godine 2038 (ponekad nazvanog "Y2K38" ili "Unix Millennium Bug"), jer 32-bitni potpisani cijeli brojevi mogu predstavljati datume samo do 19. siječnja 2038. (03:14:07 UTC).

Kako su Unix i Unix-slični operativni sustavi stekli popularnost, Unix timestamp postao je de facto standard za predstavljanje vremena u računalstvu. Usvojili su ga brojni programski jezici, baze podataka i aplikacije, proširujući se daleko izvan svog izvorno Unix okruženja.

Moderni sustavi sve više koriste 64-bitne cijele brojeve za timestamp-e, što proširuje predstavljivi raspon na približno 292 milijarde godina u oba smjera od epohe, učinkovito rješavajući Problem godine 2038. Međutim, naslijeđeni sustavi i aplikacije još uvijek mogu biti ranjivi.

Jednostavnost i korisnost Unix timestamp-a osigurali su njegovu kontinuiranu relevantnost unatoč razvoju sofisticiranijih formata predstavljanja vremena. Ostaje temeljni koncept u računalstvu, koji podupire većinu naše digitalne infrastrukture.

Primjeri Koda

Evo primjera kako pretvoriti Unix timestamp u ljudski čitljive datume u raznim programskim jezicima:

1// JavaScript konverzija timestamp-a
2function convertUnixTimestamp(timestamp, use12Hour = false) {
3  // Kreirajte novi Date objekt (JavaScript koristi milisekunde)
4  const date = new Date(timestamp * 1000);
5  
6  // Opcije formatiranja
7  const options = {
8    year: 'numeric',
9    month: 'long',
10    day: 'numeric',
11    weekday: 'long',
12    hour: use12Hour ? 'numeric' : '2-digit',
13    minute: '2-digit',
14    second: '2-digit',
15    hour12: use12Hour
16  };
17  
18  // Pretvorite u string koristeći lokalno formatiranje
19  return date.toLocaleString(undefined, options);
20}
21
22// Primjer korištenja
23const timestamp = 1609459200; // 1. siječnja 2021. 00:00:00 UTC
24console.log(convertUnixTimestamp(timestamp, false)); // 24-satni format
25console.log(convertUnixTimestamp(timestamp, true));  // 12-satni format
26

Rukovanje Rubnim Slučajevima

Kada radite s Unix timestamp-ima, važno je ispravno obraditi rubne slučajeve. Evo primjera rukovanja nekim uobičajenim rubnim slučajevima:

1// JavaScript rukovanje rubnim slučajevima
2function safeConvertTimestamp(timestamp, use12Hour = false) {
3  // Provjerite je li timestamp valjan
4  if (timestamp === undefined || timestamp === null || isNaN(timestamp)) {
5    return "Nevaljan timestamp";
6  }
7  
8  // Provjerite negativne timestamp-e (datumi prije 1970.)
9  if (timestamp < 0) {
10    // Neki preglednici možda neće ispravno obraditi negativne timestamp-e
11    // Koristite robusniji pristup za datume prije 1970.
12    const date = new Date(timestamp * 1000);
13    if (isNaN(date.getTime())) {
14      return "Nevaljan datum (prije 1970.)";
15    }
16  }
17  
18  // Provjerite Y2K38 problem (za 32-bitne sustave)
19  const maxInt32 = 2147483647; // Maksimalna vrijednost za 32-bitni potpisani cijeli broj
20  if (timestamp > maxInt32) {
21    // Razmotrite korištenje BigInt za vrlo velike timestamp-e u modernom JavaScript-u
22    console.warn("Timestamp premašuje granicu 32-bitnog cijelog broja (Y2K38 problem)");
23  }
24  
25  // Nastavite s normalnom konverzijom
26  try {
27    const date = new Date(timestamp * 1000);
28    const options = {
29      year: 'numeric',
30      month: 'long',
31      day: 'numeric',
32      weekday: 'long',
33      hour: use12Hour ? 'numeric' : '2-digit',
34      minute: '2-digit',
35      second: '2-digit',
36      hour12: use12Hour
37    };
38    return date.toLocaleString(undefined, options);
39  } catch (error) {
40    return "Greška prilikom konverzije timestamp-a: " + error.message;
41  }
42}
43

Reference

  1. "Unix Time." Wikipedia, Wikimedia Foundation, https://en.wikipedia.org/wiki/Unix_time

  2. "Problem godine 2038." Wikipedia, Wikimedia Foundation, https://en.wikipedia.org/wiki/Year_2038_problem

  3. Olson, Arthur David. "Složenosti kalendarskog vremena." The Open Group, https://www.usenix.org/legacy/events/usenix01/full_papers/olson/olson.pdf

  4. "ISO 8601." Wikipedia, Wikimedia Foundation, https://en.wikipedia.org/wiki/ISO_8601

  5. "RFC 3339: Datum i vrijeme na internetu: Timestamps." Internet Engineering Task Force (IETF), https://tools.ietf.org/html/rfc3339

  6. Kernighan, Brian W., i Dennis M. Ritchie. "C Programski Jezik." Prentice Hall, 1988.