🛠️

Whiz Tools

Build • Create • Innovate

Pretvornik Unix časovnega žiga v datum: Podpora za 12/24-urni format

Pretvorite Unix časovne žige v datume in čase, ki jih je mogoče brati. Izberite med 12-urnim in 24-urnim časovnim formatom s tem preprostim, uporabniku prijaznim orodjem za pretvorbo.

Pretvornik Unix časovnega žiga

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

Pretvorjen datum in čas

📚

Dokumentacija

Pretvornik Unix časovnih žigov

Uvod

Unix časovni žig (znan tudi kot POSIX čas ali Epoch čas) je sistem za opisovanje točke v času. To je število sekund, ki so minile od 1. januarja 1970 (polnoč UTC/GMT), brez upoštevanja prestopnih sekund. Unix časovni žigi so široko uporabljeni v računalniških sistemih in programskih jezikih, saj zagotavljajo kompaktno, jezikovno neodvisno predstavitev določenega trenutka v času.

Ta pretvornik časovnih žigov v datume samodejno zazna in obdeluje časovne žige različnih dolžin, vključno s preciznostjo mikrosekund (16 številk), preciznostjo milisekund (13 številk) in standardnimi Unix časovnimi žigi (10 številk). Orodje prepozna format časovnega žiga na podlagi dolžine vnosa, ga pretvori v človeško berljivo obliko datuma in časa ter prikaže rezultat, ne da bi bilo treba uporabnikom določiti vrsto časovnega žiga. Podpira tako 12-urni (AM/PM) kot 24-urni časovni format, da zadosti različnim regionalnim in osebnim preferencam.

Kako delujejo Unix časovni žigi

Unix časovni žigi se izračunajo kot število sekund od Unix Epoch (1. januar 1970, 00:00:00 UTC). To jih naredi še posebej uporabne za izračunavanje časovnih razlik in za shranjevanje datumov v kompaktni obliki.

Matematična pretvorba iz Unix časovnega žiga v koledarski datum vključuje več korakov:

  1. Začnite z Unix Epoch (1. januar 1970, 00:00:00 UTC)
  2. Dodajte število sekund v časovnem žigu
  3. Upoštevajte prestopne leta, različne dolžine mesecev in druge koledarske zapletenosti
  4. Uporabite prilagoditve časovnega pasu, če je potrebno

Na primer, Unix časovni žig 1609459200 predstavlja petek, 1. januar 2021, 00:00:00 UTC.

Formula za pretvorbo se lahko izrazi kot:

Datum=Unix Epoch+Cˇasovni zˇig (v sekundah)\text{Datum} = \text{Unix Epoch} + \text{Časovni žig (v sekundah)}

Večina programskih jezikov in operacijskih sistemov ponuja vgrajene funkcije za obravnavo te pretvorbe, ki abstraktno obravnavajo kompleksne koledarske izračune.

Formati časovnih žigov in samodejna zaznava

Naš pretvornik podpira tri pogoste formate časovnih žigov, ki se samodejno zaznavajo na podlagi števila številk:

  1. Standardni Unix časovni žig (10 številk): Predstavlja sekunde od Unix Epoch. Primer: 1609459200 (1. januar 2021, 00:00:00 UTC)

  2. Preciznost milisekund (13 številk): Predstavlja milisekunde od Unix Epoch. Primer: 1609459200000 (1. januar 2021, 00:00:00 UTC)

  3. Preciznost mikrosekund (16 številk): Predstavlja mikrosekunde od Unix Epoch. Primer: 1609459200000000 (1. januar 2021, 00:00:00 UTC)

Samodejna zaznava deluje tako, da analizira dolžino vnosa:

  • Če vhod vsebuje 10 številk, se obravnava kot standardni Unix časovni žig (sekunde)
  • Če vhod vsebuje 13 številk, se obravnava kot časovni žig milisekund
  • Če vhod vsebuje 16 številk, se obravnava kot časovni žig mikrosekund

Ta samodejna zaznava odpravlja potrebo po tem, da uporabniki določijo vrsto časovnega žiga, kar orodje naredi bolj uporabniku prijazno in učinkovito.

Možnosti časovnega formata

Ta pretvornik ponuja dve možnosti časovnega formata:

  1. 24-urni format (včasih imenovan "vojaški čas"): Ure se gibljejo od 0 do 23, brez oznake AM/PM. Na primer, 15:00 je predstavljeno kot 15:00.

  2. 12-urni format: Ure se gibljejo od 1 do 12, z AM (ante meridiem) za čase od polnoči do poldneva in PM (post meridiem) za čase od poldneva do polnoči. Na primer, 15:00 v 24-urnem formatu je predstavljeno kot 3:00 PM.

Izbira med tema formatoma je v veliki meri odvisna od regionalne konvencije in osebnih preferenc:

  • 24-urni format se pogosto uporablja v večini Evrope, Latinski Ameriki in Aziji, pa tudi v znanstvenih, vojaških in medicinskih kontekstih po vsem svetu.
  • 12-urni format je prevladujoč v Združenih državah, Kanadi, Avstraliji in nekaterih drugih angleško govorečih državah za vsakodnevno uporabo.

Robne primere in omejitve

Pri delu z Unix časovnimi žigi različnih preciznosti je pomembno biti pozoren na več robnih primerov in omejitev:

  1. Negativni časovni žigi: Ti predstavljajo datume pred Unix Epoch (1. januar 1970). Čeprav so matematično veljavni, nekateri sistemi morda ne obravnavajo negativnih časovnih žigov pravilno. To velja za vse tri formate časovnih žigov.

  2. Problem leta 2038: Standardni Unix časovni žigi (10 številk) so pogosto shranjeni kot 32-bitni celoštevilski podatki, ki se bodo prelivali 19. januarja 2038. Po tem datumu 32-bitni sistemi ne bodo mogli pravilno predstavljati časov, razen če bodo spremenjeni, da uporabljajo večjo celoštevilsko vrsto.

  3. Premisleki o preciznosti:

    • Standardni časovni žigi (10 številk) imajo preciznost na ravni sekund, kar je dovolj za večino vsakodnevnih aplikacij.
    • Milisekundni časovni žigi (13 številk) zagotavljajo 1000-krat večjo preciznost, kar je uporabno za aplikacije, ki zahtevajo natančnejše časovno merjenje.
    • Mikrosekundni časovni žigi (16 številk) ponujajo še bolj fino granularnost (1/1.000.000 sekunde), kar je potrebno za visoko zmogljivo računalništvo, znanstvene aplikacije in nekatere finančne transakcije.
  4. Zelo veliki časovni žigi: Zelo oddaljeni datumi v prihodnosti morda ne bodo predstavljivi v nekaterih sistemih ali pa bodo obravnavani nekonsistentno. To je še posebej pomembno za milisekundne in mikrosekundne časovne žige, ki uporabljajo večje numerične vrednosti.

  5. Prestopne sekunde: Unix čas ne upošteva prestopnih sekund, ki se občasno dodajajo UTC, da bi nadomestile nepravilno vrtenje Zemlje. To pomeni, da Unix čas ni natančno usklajen z astronomskim časom.

  6. Premisleki o časovnem pasu: Unix časovni žigi predstavljajo trenutke v UTC. Pretvorba v lokalni čas zahteva dodatne informacije o časovnem pasu.

  7. Poletni čas: Pri pretvorbi časovnih žigov v lokalni čas je treba upoštevati zapletenosti prehodov na poletni čas.

  8. Zmeda glede formatov časovnih žigov: Brez pravilne zaznave bi lahko bil 13-milimetrski časovni žig napačno interpretiran kot zelo oddaljen datum, če bi ga obravnavali kot časovni žig, ki temelji na sekundah. Naš pretvornik to preprečuje z avtomatsko zaznavo formata na podlagi dolžine številk.

Uporabniški primeri

Unix časovni žigi različnih preciznosti se uporabljajo v številnih aplikacijah v računalništvu in upravljanju podatkov:

  1. Zapisniki baz podatkov: Časovni žigi se pogosto uporabljajo za beleženje, kdaj so bili vnosi ustvarjeni ali spremenjeni.

    • Standardni časovni žigi (10 številk) so pogosto dovolj za splošne aplikacije baz podatkov.
    • Milisekundni časovni žigi (13 številk) se uporabljajo, kadar je potrebna natančnejša razporeditev dogodkov.
  2. Spletni razvoj: HTTP glave, piškotki in mehanizmi predpomnjenja pogosto uporabljajo Unix časovne žige.

    • JavaScriptova funkcija Date.now() vrne milisekundne časovne žige (13 številk).
  3. Zapisne datoteke: Sistemski dnevniki običajno beležijo dogodke z Unix časovnimi žigi za natančno kronološko razporeditev.

    • Sistemi z visokofrekvenčnim beleženjem lahko uporabljajo milisekundno ali mikrosekundno preciznost.
  4. Sistemi za nadzor različic: Git in drugi VCS uporabljajo časovne žige za beleženje, kdaj so bile narejene spremembe.

  5. API odgovori: Mnogi spletni API-ji vključujejo časovne žige v svojih odgovorih, da bi označili, kdaj so bili podatki ustvarjeni ali kdaj so bili viri nazadnje spremenjeni.

    • REST API-ji pogosto uporabljajo milisekundne časovne žige.
  6. Datotečni sistemi: Časi ustvarjanja in sprememb datotek se pogosto shranjujejo kot Unix časovni žigi.

  7. Upravljanje sej: Spletne aplikacije uporabljajo časovne žige za določitev, kdaj naj se uporabniške seje iztečejo.

  8. Analiza podatkov: Časovni žigi zagotavljajo standardiziran način dela s časovnimi podatki v analitičnih aplikacijah.

  9. Visokofrekvenčno trgovanje: Finančni sistemi pogosto zahtevajo mikrosekundno preciznost (16 številk) za natančno zaporedje transakcij.

  10. Znanstvena merjenja: Raziskovalna oprema lahko beleži opazovanja z mikrosekundno preciznostjo za natančno časovno analizo.

Alternativne možnosti

Čeprav so Unix časovni žigi široko uporabljeni, obstajajo alternativni formati predstavitve časa, ki so morda bolj primerni v določenih kontekstih:

  1. ISO 8601: Standardizirana nizovna oblika (npr. "2021-01-01T00:00:00Z"), ki je človeško berljiva, hkrati pa ohranja možnost razvrščanja. Pogosto je prednostna pri izmenjavi podatkov in uporabniških aplikacijah.

  2. RFC 3339: Profil ISO 8601, uporabljen v internetnih protokolih, z strožjimi zahtevami glede oblikovanja.

  3. Človeško berljive oblike: Lokalizirani nizi datumov (npr. "1. januar 2021") so bolj primerni za neposredno interakcijo z uporabniki, vendar so manj primerni za izračune.

  4. Microsoft FILETIME: 64-bitna vrednost, ki predstavlja število intervalov po 100 nanosekund od 1. januarja 1601, uporabljena v sistemih Windows.

  5. Julijanski dan: Uporablja se v astronomiji in nekaterih znanstvenih aplikacijah, šteje dni od 1. januarja 4713 pr. n. št.

Izbira formata časa je odvisna od dejavnikov, kot so:

  • Zahtevana preciznost
  • Potrebe po človeški berljivosti
  • Omejitve shranjevanja
  • Združljivost z obstoječimi sistemi
  • Obseg datumov, ki jih je treba predstaviti

Zgodovina

Koncept Unix časa je nastal z razvojem operacijskega sistema Unix v Bell Labs v poznih 1960-ih in zgodnjih 1970-ih. Odločitev, da se 1. januar 1970 uporabi kot epoch, je bila nekoliko naključna, vendar praktična za tisti čas - bila je dovolj nedavna, da bi zmanjšala shranjevanje datumov, ki so bili zanimivi, a dovolj oddaljena v preteklosti, da bi bila uporabna za zgodovinske podatke.

Prvotna implementacija je uporabljala 32-bitno celoštevilsko vrednost za shranjevanje števila sekund, kar je bilo zadostno za pričakovano življenjsko dobo Unix sistemov v tistem času. Vendar je ta odločitev privedla do problema leta 2038 (včasih imenovanega "Y2K38" ali "Unix Millennium Bug"), saj 32-bitni celoštevilski podatki lahko predstavljajo datume le do 19. januarja 2038.

Ko so se računalniške potrebe razvijale, so postali potrebni časovni žigi z višjo preciznostjo:

  • Preciznost milisekund (13 številk) je postala običajna z naraščanjem interaktivnega računalništva in potrebo po merjenju odzivnosti uporabniškega vmesnika.

  • Preciznost mikrosekund (16 številk) se je pojavila z visokozmogljivimi računalniškimi aplikacijami in sistemi, ki zahtevajo izjemno natančno časovno merjenje.

Ko so Unix in Unix-podobni operacijski sistemi pridobili priljubljenost, je Unix časovni žig postal de facto standard za predstavljanje časa v računalništvu. Sprejeli so ga številni programski jeziki, baze podatkov in aplikacije, ki so se razširile daleč preko svojega prvotnega okolja Unix.

Sodobni sistemi vedno pogosteje uporabljajo 64-bitne cele številke za časovne žige, kar razširi obseg predstavitve na približno 292 milijard let v obe smeri od epoch, kar učinkovito reši problem leta 2038. Vendar so lahko dediščinski sistemi in aplikacije še vedno ranljivi.

Preprostost in uporabnost Unix časovnega žiga sta zagotovili njegovo nadaljnjo pomembnost kljub razvoju bolj sofisticiranih formatov predstavitve časa. Ostaja temeljni koncept v računalništvu, ki podpira veliko našega digitalnega infrastrukture.

Kode Primeri

Tukaj so primeri, kako pretvoriti Unix časovne žige različnih preciznosti v človeško berljive datume v različnih programskih jezikih:

1// JavaScript pretvorba časovnega žiga z avtomatsko zaznavo formata
2function convertTimestamp(timestamp, use12Hour = false) {
3  // Pretvori niz v številko, če je potrebno
4  const numericTimestamp = Number(timestamp);
5  
6  // Zaznaj format časovnega žiga na podlagi dolžine številk
7  let date;
8  if (timestamp.length === 16) {
9    // Preciznost mikrosekund (delite z 1.000.000, da dobite sekunde)
10    date = new Date(numericTimestamp / 1000);
11    console.log("Zaznano: Časovni žig mikrosekundne preciznosti");
12  } else if (timestamp.length === 13) {
13    // Preciznost milisekund
14    date = new Date(numericTimestamp);
15    console.log("Zaznano: Časovni žig milisekundne preciznosti");
16  } else if (timestamp.length === 10) {
17    // Standardni Unix časovni žig (sekunde)
18    date = new Date(numericTimestamp * 1000);
19    console.log("Zaznano: Standardni Unix časovni žig (sekunde)");
20  } else {
21    throw new Error("Neveljavna oblika časovnega žiga. Pričakovane so 10, 13 ali 16 številk.");
22  }
23  
24  // Možnosti oblikovanja
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  // Pretvorite v niz z uporabo lokalnega oblikovanja
37  return date.toLocaleString(undefined, options);
38}
39
40// Primer uporabe
41try {
42  // Standardni Unix časovni žig (10 številk)
43  console.log(convertTimestamp("1609459200", false)); 
44  
45  // Preciznost milisekund (13 številk)
46  console.log(convertTimestamp("1609459200000", false)); 
47  
48  // Preciznost mikrosekund (16 številk)
49  console.log(convertTimestamp("1609459200000000", true)); 
50} catch (error) {
51  console.error(error.message);
52}
53

Obvladovanje robnih primerov

Pri delu z Unix časovnimi žigi različnih preciznosti je pomembno pravilno obravnavati robne primere. Tukaj je primer, ki prikazuje celovito obravnavo robnih primerov:

1// JavaScript celovita obravnava robnih primerov za več formatov časovnih žigov
2function safeConvertTimestamp(timestamp, use12Hour = false) {
3  // Preverjanje vnosa
4  if (timestamp === undefined || timestamp === null || timestamp === '') {
5    return "Napaka: Prazna ali nedoločena časovna žig";
6  }
7  
8  // Prepričajte se, da je časovni žig niz za preverjanje dolžine
9  const timestampStr = String(timestamp).trim();
10  
11  // Preverite, ali časovni žig vsebuje le številke
12  if (!/^\d+$/.test(timestampStr)) {
13    return "Napaka: Časovni žig mora vsebovati le številke";
14  }
15  
16  // Zaznaj format na podlagi dolžine
17  let date;
18  try {
19    if (timestampStr.length === 16) {
20      // Preciznost mikrosekund
21      const microseconds = Number(timestampStr);
22      date = new Date(microseconds / 1000); // Pretvorite v milisekunde
23      console.log("Obdelava časovnega žiga mikrosekundne preciznosti (16 številk)");
24      
25      // Preverite neveljavne datume
26      if (isNaN(date.getTime())) {
27        return "Napaka: Neveljaven časovni žig mikrosekund";
28      }
29    } else if (timestampStr.length === 13) {
30      // Preciznost milisekund
31      const milliseconds = Number(timestampStr);
32      date = new Date(milliseconds);
33      console.log("Obdelava časovnega žiga milisekundne preciznosti (13 številk)");
34      
35      // Preverite neveljavne datume
36      if (isNaN(date.getTime())) {
37        return "Napaka: Neveljaven časovni žig milisekund";
38      }
39    } else if (timestampStr.length === 10) {
40      // Standardni Unix časovni žig (sekunde)
41      const seconds = Number(timestampStr);
42      date = new Date(seconds * 1000);
43      console.log("Obdelava standardnega časovnega žiga (10 številk)");
44      
45      // Preverite neveljavne datume
46      if (isNaN(date.getTime())) {
47        return "Napaka: Neveljaven standardni časovni žig";
48      }
49      
50      // Preverite problem Y2K38 (za 32-bitne sisteme)
51      const maxInt32 = 2147483647; // Največja vrednost za 32-bitno celo število
52      if (seconds > maxInt32) {
53        console.warn("Opozorilo: Časovni žig presega omejitev 32-bitnega celega števila (problem Y2K38)");
54      }
55    } else {
56      return "Napaka: Neveljavna dolžina časovnega žiga. Pričakovane so 10, 13 ali 16 številk.";
57    }
58    
59    // Oblikovanje datuma
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 "Napaka pri pretvorbi časovnega žiga: " + error.message;
74  }
75}
76
77// Testiranje z različnimi robnimi primeri
78console.log(safeConvertTimestamp("1609459200"));      // Standardni (10 številk)
79console.log(safeConvertTimestamp("1609459200000"));   // Milisekunde (13 številk)
80console.log(safeConvertTimestamp("1609459200000000")); // Mikrosekunde (16 številk)
81console.log(safeConvertTimestamp("abc123"));          // Ne-numerično
82console.log(safeConvertTimestamp("12345"));           // Neveljavna dolžina
83console.log(safeConvertTimestamp("9999999999999999")); // Zelo velik časovni žig mikrosekund
84console.log(safeConvertTimestamp(""));                // Prazna niz
85

Pogosto zastavljena vprašanja

Kaj je Unix časovni žig?

Unix časovni žig je število sekund, ki so minile od 1. januarja 1970 (polnoč UTC/GMT), brez upoštevanja prestopnih sekund. Ponuja kompaktno, jezikovno neodvisno način za predstavitev določenega trenutka v času.

Kako deluje samodejna zaznava formata časovnega žiga?

Pretvornik samodejno zazna format časovnega žiga na podlagi števila številk:

  • 10 številk: Standardni Unix časovni žig (sekunde od epoch)
  • 13 številk: Časovni žig milisekund
  • 16 številk: Časovni žig mikrosekund

Zakaj bi potreboval milisekundno ali mikrosekundno preciznost?

Milisekundna preciznost (13 številk) je uporabna za aplikacije, ki zahtevajo natančnejše časovno merjenje, kot so spremljanje zmogljivosti, sledenje interakcijam uporabnikov in nekatere finančne aplikacije. Mikrosekundna preciznost (16 številk) je potrebna za visoko zmogljivo računalništvo, znanstvene aplikacije in sisteme visokofrekvenčnega trgovanja, kjer je izjemno natančno merjenje ključno.

Ali lahko pretvorim datume pred letom 1970 z uporabo Unix časovnih žigov?

Da, datumi pred 1. januarjem 1970 so predstavljeni z negativnimi časovnimi žigi. Vendar pa nekateri sistemi morda ne obravnavajo negativnih časovnih žigov pravilno, zato je pomembno testirati to funkcionalnost, če morate delati z zgodovinskimi datumi.

Kaj je problem leta 2038?

Problem leta 2038 se pojavi, ker mnogi sistemi shranjujejo Unix časovne žige kot 32-bitne celoštevilske podatke, ki lahko predstavljajo datume le do 19. januarja 2038 (03:14:07 UTC). Po tem datumu se bo celo število prelivalo, kar lahko povzroči napake v sistemu. Sodobni sistemi vedno pogosteje uporabljajo 64-bitne cele številke, da se izognejo temu problemu.

Kako obvladujem pretvorbe časovnih pasov z Unix časovnimi žigi?

Unix časovni žigi so vedno v UTC (usklajeni univerzalni čas). Da bi pretvorili v določen časovni pas, morate po pretvorbi časovnega žiga v datum uporabiti ustrezno prilagoditev. Večina programskih jezikov ponuja vgrajene funkcije za obravnavo pretvorb časovnih pasov.

Kakšna je razlika med Unix časom in ISO 8601?

Unix čas je numerična predstavitev (sekunde od epoch), medtem ko je ISO 8601 nizovna oblika (npr. "2021-01-01T00:00:00Z"). Unix čas je bolj kompakten in lažji za uporabo pri izračunih, medtem ko je ISO 8601 bolj človeško berljiv in samopojasnjujoč.

Kako natančni so Unix časovni žigi?

Standardni Unix časovni žigi imajo preciznost na ravni sekund. Za aplikacije, ki zahtevajo večjo natančnost, milisekundni časovni žigi (13 številk) zagotavljajo natančnost 1/1000 sekunde, mikrosekundni časovni žigi (16 številk) pa zagotavljajo natančnost 1/1.000.000 sekunde.

Ali Unix časovni žigi upoštevajo prestopne sekunde?

Ne, Unix čas je opredeljen kot število sekund od epoch, brez prestopnih sekund. To pomeni, da se v času prestopne sekunde Unix čas ne poveča. To lahko povzroči težave v aplikacijah, ki zahtevajo natančen astronomski čas.

Ali lahko uporabim Unix časovne žige za načrtovanje prihodnjih dogodkov?

Da, Unix časovni žigi se široko uporabljajo za načrtovanje. Vendar pa bodite pozorni na morebitne omejitve, kot je problem leta 2038 za 32-bitne sisteme in obravnavanje sprememb časovnih pasov ter prehodov na poletni čas.

Reference

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

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

  3. Olson, Arthur David. "Zapletenosti koledarskega časa." 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 in čas na internetu: Časovni žigi." Internet Engineering Task Force (IETF), https://tools.ietf.org/html/rfc3339

  6. Kernighan, Brian W., in Dennis M. Ritchie. "C programski jezik." Prentice Hall, 1988.

  7. "Natančno merjenje časa v visokozmogljivem računalništvu." ACM Computing Surveys, https://dl.acm.org/doi/10.1145/3232678

  8. "Predstavitev časa v finančnih sistemih." Journal of Financial Technology, https://www.fintech-journal.com/time-representation

Poskusite naš pretvornik časovnih žigov zdaj, da enostavno pretvorite Unix časovne žige katere koli preciznosti v človeško berljive datume. Ne glede na to, ali delate s standardnimi Unix časovnimi žigi, milisekundno preciznostjo ali mikrosekundno preciznostjo, naše orodje samodejno zazna format in zagotavlja natančne pretvorbe.