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
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:
- Počnite s Unix Epoch (1. siječnja 1970., 00:00:00 UTC)
- Dodajte broj sekundi u timestamp-u
- Uzmite u obzir prijestupne godine, varijabilne duljine mjeseci i druge kalendarske složenosti
- 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:
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:
-
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.
-
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:
-
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.
-
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.
-
Ekstremno veliki timestampi: Vrlo daleki budući datumi možda neće biti predstavljivi u nekim sustavima, ili će se možda obraditi nekonzistentno.
-
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.
-
Razmatranja vremenskih zona: Unix timestampi predstavljaju trenutke u UTC-u. Pretvaranje u lokalno vrijeme zahtijeva dodatne informacije o vremenskoj zoni.
-
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:
-
Baze podataka: Timestampi se često koriste za bilježenje kada su unosi stvoreni ili izmijenjeni.
-
Web razvoj: HTTP zaglavlja, kolačići i mehanizmi keširanja često koriste Unix timestamp-e.
-
Zapisnici: Sustavni zapisi obično bilježe događaje s Unix timestamp-ima radi preciznog kronološkog redoslijeda.
-
Sustavi za kontrolu verzija: Git i drugi VCS koriste timestamp-e za bilježenje kada su izvršene promjene.
-
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.
-
Datotečni sustavi: Vrijeme stvaranja i izmjene datoteka često se pohranjuje kao Unix timestamp.
-
Upravljanje sesijama: Web aplikacije koriste timestamp-e kako bi odredile kada bi korisničke sesije trebale isteći.
-
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:
-
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.
-
RFC 3339: Profil ISO 8601 korišten u internet protokolima, s strožim zahtjevima za formatiranje.
-
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.
-
Microsoft FILETIME: 64-bitna vrijednost koja predstavlja broj intervala od 100 nanosekundi od 1. siječnja 1601., korištena u Windows sustavima.
-
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
1# Python konverzija timestamp-a
2import datetime
3
4def convert_unix_timestamp(timestamp, use_12hour=False):
5 # Pretvorite Unix timestamp u datetime objekt
6 date = datetime.datetime.fromtimestamp(timestamp)
7
8 # Formatirajte string datuma
9 if use_12hour:
10 format_string = "%A, %B %d, %Y %I:%M:%S %p" # 12-satni format s AM/PM
11 else:
12 format_string = "%A, %B %d, %Y %H:%M:%S" # 24-satni format
13
14 return date.strftime(format_string)
15
16# Primjer korištenja
17timestamp = 1609459200 # 1. siječnja 2021. 00:00:00 UTC
18print(convert_unix_timestamp(timestamp, False)) # 24-satni format
19print(convert_unix_timestamp(timestamp, True)) # 12-satni format
20
1<?php
2// PHP konverzija timestamp-a
3function convertUnixTimestamp($timestamp, $use12Hour = false) {
4 // Format string
5 $formatString = $use12Hour
6 ? 'l, F j, Y g:i:s A' // 12-satni format s AM/PM
7 : 'l, F j, Y H:i:s'; // 24-satni format
8
9 // Pretvorite i formatirajte datum
10 return date($formatString, $timestamp);
11}
12
13// Primjer korištenja
14$timestamp = 1609459200; // 1. siječnja 2021. 00:00:00 UTC
15echo convertUnixTimestamp($timestamp, false) . "\n"; // 24-satni format
16echo convertUnixTimestamp($timestamp, true) . "\n"; // 12-satni format
17?>
18
1// Java konverzija timestamp-a
2import java.time.Instant;
3import java.time.LocalDateTime;
4import java.time.ZoneId;
5import java.time.format.DateTimeFormatter;
6
7public class UnixTimestampConverter {
8 public static String convertUnixTimestamp(long timestamp, boolean use12Hour) {
9 // Pretvorite Unix timestamp u Instant, zatim u LocalDateTime
10 Instant instant = Instant.ofEpochSecond(timestamp);
11 LocalDateTime dateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
12
13 // Kreirajte format prema željenom formatu
14 DateTimeFormatter formatter = DateTimeFormatter.ofPattern(
15 use12Hour ? "EEEE, MMMM d, yyyy h:mm:ss a" : "EEEE, MMMM d, yyyy HH:mm:ss"
16 );
17
18 // Formatirajte datum
19 return dateTime.format(formatter);
20 }
21
22 public static void main(String[] args) {
23 long timestamp = 1609459200; // 1. siječnja 2021. 00:00:00 UTC
24 System.out.println(convertUnixTimestamp(timestamp, false)); // 24-satni format
25 System.out.println(convertUnixTimestamp(timestamp, true)); // 12-satni format
26 }
27}
28
1// C# konverzija timestamp-a
2using System;
3
4class UnixTimestampConverter
5{
6 public static string ConvertUnixTimestamp(long timestamp, bool use12Hour)
7 {
8 // Pretvorite Unix timestamp u DateTime
9 // Unix timestamp je sekunde od 1970-01-01
10 DateTime dateTime = DateTimeOffset.FromUnixTimeSeconds(timestamp).DateTime;
11
12 // Format string na temelju 12-satnog ili 24-satnog preferencija
13 string formatString = use12Hour
14 ? "dddd, MMMM d, yyyy h:mm:ss tt" // 12-satni format s AM/PM
15 : "dddd, MMMM d, yyyy HH:mm:ss"; // 24-satni format
16
17 // Vratite formatirani string
18 return dateTime.ToString(formatString);
19 }
20
21 static void Main()
22 {
23 long timestamp = 1609459200; // 1. siječnja 2021. 00:00:00 UTC
24 Console.WriteLine(ConvertUnixTimestamp(timestamp, false)); // 24-satni format
25 Console.WriteLine(ConvertUnixTimestamp(timestamp, true)); // 12-satni format
26 }
27}
28
1# Ruby konverzija timestamp-a
2require 'time'
3
4def convert_unix_timestamp(timestamp, use_12hour = false)
5 # Pretvorite Unix timestamp u Time objekt
6 time = Time.at(timestamp)
7
8 # Format na temelju 12-satnog ili 24-satnog preferencija
9 if use_12hour
10 time.strftime("%A, %B %d, %Y %I:%M:%S %p") # 12-satni format s AM/PM
11 else
12 time.strftime("%A, %B %d, %Y %H:%M:%S") # 24-satni format
13 end
14end
15
16# Primjer korištenja
17timestamp = 1609459200 # 1. siječnja 2021. 00:00:00 UTC
18puts convert_unix_timestamp(timestamp, false) # 24-satni format
19puts convert_unix_timestamp(timestamp, true) # 12-satni format
20
1// Go konverzija timestamp-a
2package main
3
4import (
5 "fmt"
6 "time"
7)
8
9func convertUnixTimestamp(timestamp int64, use12Hour bool) string {
10 // Pretvorite Unix timestamp u Time
11 t := time.Unix(timestamp, 0)
12
13 // Format string na temelju 12-satnog ili 24-satnog preferencija
14 formatString := "Monday, January 2, 2006 "
15 if use12Hour {
16 formatString += "3:04:05 PM" // 12-satni format s AM/PM
17 } else {
18 formatString += "15:04:05" // 24-satni format
19 }
20
21 // Vratite formatirano vrijeme
22 return t.Format(formatString)
23}
24
25func main() {
26 timestamp := int64(1609459200) // 1. siječnja 2021. 00:00:00 UTC
27 fmt.Println(convertUnixTimestamp(timestamp, false)) // 24-satni format
28 fmt.Println(convertUnixTimestamp(timestamp, true)) // 12-satni format
29}
30
1// Swift konverzija timestamp-a
2import Foundation
3
4func convertUnixTimestamp(_ timestamp: Int, use12Hour: Bool) -> String {
5 // Kreirajte Date iz Unix timestamp-a
6 let date = Date(timeIntervalSince1970: TimeInterval(timestamp))
7
8 // Kreirajte DateFormatter
9 let formatter = DateFormatter()
10 formatter.dateStyle = .full
11
12 // Postavite stil vremena na temelju 12-satnog ili 24-satnog preferencija
13 if use12Hour {
14 formatter.timeStyle = .medium
15 formatter.amSymbol = "AM"
16 formatter.pmSymbol = "PM"
17 } else {
18 formatter.timeStyle = .medium
19 formatter.dateFormat = formatter.dateFormat?.replacingOccurrences(of: "h:mm:ss a", with: "HH:mm:ss")
20 }
21
22 // Vratite formatirani datum
23 return formatter.string(from: date)
24}
25
26// Primjer korištenja
27let timestamp = 1609459200 // 1. siječnja 2021. 00:00:00 UTC
28print(convertUnixTimestamp(timestamp, use12Hour: false)) // 24-satni format
29print(convertUnixTimestamp(timestamp, use12Hour: true)) // 12-satni format
30
1# R konverzija timestamp-a
2convert_unix_timestamp <- function(timestamp, use_12hour = FALSE) {
3 # Pretvorite Unix timestamp u POSIXct datetime
4 date_time <- as.POSIXct(timestamp, origin = "1970-01-01", tz = "UTC")
5
6 # Format na temelju 12-satnog ili 24-satnog preferencija
7 if (use_12hour) {
8 format_string <- "%A, %B %d, %Y %I:%M:%S %p" # 12-satni format s AM/PM
9 } else {
10 format_string <- "%A, %B %d, %Y %H:%M:%S" # 24-satni format
11 }
12
13 # Vratite formatirani string datuma
14 format(date_time, format_string)
15}
16
17# Primjer korištenja
18timestamp <- 1609459200 # 1. siječnja 2021. 00:00:00 UTC
19cat(convert_unix_timestamp(timestamp, FALSE), "\n") # 24-satni format
20cat(convert_unix_timestamp(timestamp, TRUE), "\n") # 12-satni format
21
1% MATLAB konverzija timestamp-a
2function formattedDate = convertUnixTimestamp(timestamp, use12Hour)
3 % Pretvorite Unix timestamp u MATLAB datetime
4 % MATLAB datumi su dani od 1900-01-01, s 1 = 1900-01-01
5 % Unix timestampi su sekunde od 1970-01-01
6
7 % Prvo pretvorite u Excel format datuma
8 % 25569 je broj dana između 1900-01-01 i 1970-01-01
9 excelDate = (timestamp / 86400) + 25569;
10
11 % Formatirati na temelju 12-satnog ili 24-satnog preferencija
12 if use12Hour
13 formattedDate = datestr(excelDate, 'dddd, mmmm dd, yyyy h:mm:ss AM/PM');
14 else
15 formattedDate = datestr(excelDate, 'dddd, mmmm dd, yyyy hh:mm:ss');
16 end
17end
18
19% Primjer korištenja
20timestamp = 1609459200; % 1. siječnja 2021. 00:00:00 UTC
21disp(convertUnixTimestamp(timestamp, false)) % 24-satni format
22disp(convertUnixTimestamp(timestamp, true)) % 12-satni format
23
1' Excel VBA konverzija timestamp-a
2Function ConvertUnixTimestamp(timestamp As Long, Optional use12Hour As Boolean = False) As String
3 ' Pretvorite Unix timestamp u Excel datum/vrijeme
4 ' Excel datumi su dani od 1900-01-01, s 1 = 1900-01-01
5 ' Unix timestampi su sekunde od 1970-01-01
6
7 ' Prvo pretvorite u Excel format datuma
8 ' 25569 je broj dana između 1900-01-01 i 1970-01-01
9 Dim excelDate As Double
10 excelDate = (timestamp / 86400) + 25569
11
12 ' Formatirati datum na temelju 12-satnog ili 24-satnog preferencija
13 If use12Hour Then
14 ConvertUnixTimestamp = Format(excelDate, "dddd, mmmm d, yyyy h:mm:ss AM/PM")
15 Else
16 ConvertUnixTimestamp = Format(excelDate, "dddd, mmmm d, yyyy hh:mm:ss")
17 End If
18End Function
19
20' Korištenje u radnom listu:
21' =ConvertUnixTimestamp(1609459200, TRUE) ' 12-satni format
22' =ConvertUnixTimestamp(1609459200, FALSE) ' 24-satni format
23
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
-
"Unix Time." Wikipedia, Wikimedia Foundation, https://en.wikipedia.org/wiki/Unix_time
-
"Problem godine 2038." Wikipedia, Wikimedia Foundation, https://en.wikipedia.org/wiki/Year_2038_problem
-
Olson, Arthur David. "Složenosti kalendarskog vremena." 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: Datum i vrijeme na internetu: Timestamps." Internet Engineering Task Force (IETF), https://tools.ietf.org/html/rfc3339
-
Kernighan, Brian W., i Dennis M. Ritchie. "C Programski Jezik." Prentice Hall, 1988.
Povratne informacije
Kliknite na obavijest o povratnim informacijama da biste započeli davati povratne informacije o ovom alatu
Povezani alati
Otkrijte više alata koji bi mogli biti korisni za vaš radni proces