Unix-tidsstämpel till datumkonverterare: Stöd för 12/24-timmarsformat
Konvertera Unix-tidsstämplar till mänskligt läsbara datum och tider. Välj mellan 12-timmars och 24-timmars tidsformat med detta enkla, användarvänliga konverteringsverktyg.
Unix Tidsstämpel Konverterare
Konverterad Datum & Tid
Dokumentation
Unix Timestamp Converter
Introduktion
En Unix-tidsstämpel (även känd som POSIX-tid eller Epoch-tid) är ett system för att beskriva en tidpunkt. Det är antalet sekunder som har förflutit sedan den 1 januari 1970 (midnatt UTC/GMT), utan att räkna med skottsekunder. Unix-tidsstämplar används i stor utsträckning i datorsystem och programmeringsspråk eftersom de ger en kompakt, språkoberoende representation av ett specifikt ögonblick i tiden.
Denna tidsstämpel till datum-omvandlare upptäcker automatiskt och bearbetar tidsstämplar av olika längder, inklusive mikrosekundprecision (16 siffror), millisekundprecision (13 siffror) och standard Unix-tidsstämplar (10 siffror). Verktyget identifierar tidsstämpelns format baserat på inmatningens längd, konverterar det till ett människoläsbart datum- och tidsformat och visar resultatet utan att användarna behöver ange tidsstämpelns typ. Det stöder både 12-timmars (AM/PM) och 24-timmars tidsformat för att tillgodose olika regionala och personliga preferenser.
Hur Unix-tidsstämplar fungerar
Unix-tidsstämplar beräknas som antalet sekunder sedan Unix Epoch (1 januari 1970, 00:00:00 UTC). Detta gör dem särskilt användbara för att beräkna tidsdifferenser och för att lagra datum i ett kompakt format.
Den matematiska konverteringen från en Unix-tidsstämpel till ett kalenderdatum involverar flera steg:
- Börja med Unix Epoch (1 januari 1970, 00:00:00 UTC)
- Lägg till antalet sekunder i tidsstämpeln
- Ta hänsyn till skottår, varierande månadslängder och andra kalenderkomplexiteter
- Tillämpa tidszonsjusteringar om det behövs
Till exempel representerar Unix-tidsstämpeln 1609459200
fredagen den 1 januari 2021, 00:00:00 UTC.
Konverteringsformeln kan uttryckas som:
De flesta programmeringsspråk och operativsystem tillhandahåller inbyggda funktioner för att hantera denna konvertering, vilket abstraherar bort de komplexa kalenderberäkningarna.
Tidsstämpelformat och automatisk detektion
Vår omvandlare stöder tre vanliga tidsstämpelformat, som automatiskt upptäcks baserat på antalet siffror:
-
Standard Unix-tidsstämpel (10 siffror): Representerar sekunder sedan Unix Epoch. Exempel:
1609459200
(1 januari 2021, 00:00:00 UTC) -
Millisekundprecision (13 siffror): Representerar millisekunder sedan Unix Epoch. Exempel:
1609459200000
(1 januari 2021, 00:00:00 UTC) -
Mikrosekundprecision (16 siffror): Representerar mikrosekunder sedan Unix Epoch. Exempel:
1609459200000000
(1 januari 2021, 00:00:00 UTC)
Den automatiska detektionen fungerar genom att analysera längden på inmatningen:
- Om inmatningen innehåller 10 siffror, behandlas den som en standard Unix-tidsstämpel (sekunder)
- Om inmatningen innehåller 13 siffror, behandlas den som en millisekundstidsstämpel
- Om inmatningen innehåller 16 siffror, behandlas den som en mikrosekundstidsstämpel
Denna automatiska detektion eliminerar behovet för användarna att ange tidsstämpelns typ, vilket gör verktyget mer användarvänligt och effektivt.
Tidsformatalternativ
Denna omvandlare erbjuder två tidsformatalternativ:
-
24-timmarsformat (ibland kallat "militär tid"): Timmarna sträcker sig från 0 till 23, och det finns ingen AM/PM-beteckning. Till exempel, 15:00 representeras som 15:00.
-
12-timmarsformat: Timmarna sträcker sig från 1 till 12, med AM (ante meridiem) för tider från midnatt till middag, och PM (post meridiem) för tider från middag till midnatt. Till exempel, 15:00 i 24-timmarsformat representeras som 3:00 PM.
Valet mellan dessa format är i stor utsträckning en fråga om regional konvention och personlig preferens:
- 24-timmarsformatet används vanligtvis i de flesta av Europa, Latinamerika och Asien, samt inom vetenskapliga, militära och medicinska sammanhang världen över.
- 12-timmarsformatet är utbrett i USA, Kanada, Australien och vissa andra engelsktalande länder för vardagligt bruk.
Gränsfall och begränsningar
När man arbetar med Unix-tidsstämplar av olika precisioner är det viktigt att vara medveten om flera gränsfall och begränsningar:
-
Negativa tidsstämplar: Dessa representerar datum före Unix Epoch (1 januari 1970). Även om de matematiskt är giltiga, kanske vissa system inte hanterar negativa tidsstämplar korrekt. Detta gäller alla tre tidsstämpelformat.
-
År 2038-problemet: Standard Unix-tidsstämplar (10 siffror) lagras ofta som 32-bitars signerade heltal, vilket kommer att överflöda den 19 januari 2038. Efter denna tidpunkt kommer 32-bitars system inte att kunna representera tider korrekt om de inte modifieras för att använda en större heltalstyp.
-
Precision överväganden:
- Standardtidsstämplar (10 siffror) har precision på sekundsnivå, vilket är tillräckligt för de flesta vardagliga tillämpningar.
- Millisekundtidsstämplar (13 siffror) ger 1000 gånger mer precision, användbart för tillämpningar som kräver mer exakt tidtagning.
- Mikrosekundtidsstämplar (16 siffror) erbjuder ännu finare granularity (1/1,000,000 sekund), vilket är nödvändigt för högpresterande databehandling, vetenskapliga tillämpningar och vissa finansiella transaktioner.
-
Extremt stora tidsstämplar: Mycket långt in i framtiden kan datum kanske inte representeras i vissa system, eller kan hanteras inkonsekvent. Detta är särskilt relevant för millisekund- och mikrosekundtidsstämplar, som använder större numeriska värden.
-
Skottsekunder: Unix-tid tar inte hänsyn till skottsekunder, som ibland läggs till UTC för att kompensera för jordens oregelbundna rotation. Detta betyder att Unix-tid inte är exakt synkroniserad med astronomisk tid.
-
Tidszonsöverväganden: Unix-tidsstämplar representerar ögonblick i UTC. Konvertering till lokal tid kräver ytterligare tidszonsinformation.
-
Sommartid: Vid konvertering av tidsstämplar till lokal tid måste komplexiteten i övergångarna till sommartid beaktas.
-
Förvirring kring tidsstämpelformat: Utan korrekt detektion kan en 13-siffrig millisekundstidsstämpel felaktigt tolkas som ett mycket långt framtida datum om den behandlas som en tidsstämpel baserad på sekunder. Vår omvandlare förhindrar detta genom att automatiskt upptäcka formatet baserat på siffers längd.
Användningsfall
Unix-tidsstämplar av olika precisioner används i många tillämpningar inom databehandling och datamanagement:
-
Databasregister: Tidsstämplar används vanligtvis för att registrera när poster skapades eller ändrades.
- Standardtidsstämplar (10 siffror) är ofta tillräckliga för allmänna databasapplikationer.
- Millisekundtidsstämplar (13 siffror) används när mer exakt ordning av händelser krävs.
-
Webbutveckling: HTTP-huvuden, cookies och cache-mekanismer använder ofta Unix-tidsstämplar.
- JavaScripts
Date.now()
returnerar millisekundtidsstämplar (13 siffror).
- JavaScripts
-
Loggfiler: Systemloggar registrerar vanligtvis händelser med Unix-tidsstämplar för exakt kronologisk ordning.
- Högfrekventa loggningssystem kan använda millisekund- eller mikrosekundprecision.
-
Versionskontrollsystem: Git och andra VCS använder tidsstämplar för att registrera när commits gjordes.
-
API-svar: Många web API:er inkluderar tidsstämplar i sina svar för att indikera när data genererades eller när resurser senast ändrades.
- REST API:er använder ofta millisekundprecisionstidsstämplar.
-
Filsystem: Filskapande och ändringstider lagras ofta som Unix-tidsstämplar.
-
Sessionshantering: Webbapplikationer använder tidsstämplar för att avgöra när användarsessioner ska löpa ut.
-
Dataanalys: Tidsstämplar ger ett standardiserat sätt att arbeta med temporala data i analysapplikationer.
-
Högfrekvent handel: Finansiella system kräver ofta mikrosekundprecision (16 siffror) för att exakt sekvensera transaktioner.
-
Vetenskapliga mätningar: Forskningsutrustning kan registrera observationer med mikrosekundprecision för noggrann tidsanalys.
Alternativ
Även om Unix-tidsstämplar är allmänt använda, finns det alternativa tidsrepresentationsformat som kan vara mer lämpliga i vissa sammanhang:
-
ISO 8601: Ett standardiserat strängformat (t.ex. "2021-01-01T00:00:00Z") som är människoläsbart samtidigt som det bibehåller sorteringsbarhet. Det föredras ofta för datautbyte och användarorienterade applikationer.
-
RFC 3339: En profil av ISO 8601 som används i internetprotokoll, med striktare formateringskrav.
-
Människoläsbara format: Lokaliserade datumsträngar (t.ex. "1 januari 2021") är mer lämpliga för direkt användarinteraktion men är mindre lämpliga för beräkning.
-
Microsoft FILETIME: Ett 64-bitars värde som representerar antalet 100-nanosekundintervall sedan den 1 januari 1601, som används i Windows-system.
-
Julian Day Number: Används inom astronomi och vissa vetenskapliga tillämpningar, räknar dagar sedan den 1 januari 4713 f.Kr.
Valet av tidsformat beror på faktorer som:
- Krävd precision
- Behov av mänsklig läsbarhet
- Lagringsbegränsningar
- Kompatibilitet med befintliga system
- Omfånget av datum som behöver representeras
Historia
Konceptet Unix-tid uppstod med utvecklingen av Unix-operativsystemet på Bell Labs i slutet av 1960-talet och början av 1970-talet. Beslutet att använda den 1 januari 1970 som epoch var något godtyckligt men praktiskt för tiden – det var tillräckligt nyligen för att minimera lagringskraven för intressanta datum men tillräckligt långt tillbaka för att vara användbart för historiska data.
Den ursprungliga implementeringen använde ett 32-bitars signerade heltal för att lagra antalet sekunder, vilket var tillräckligt för den förväntade livslängden för Unix-system vid den tiden. Emellertid ledde detta beslut till År 2038-problemet (ibland kallat "Y2K38" eller "Unix Millennium Bug"), eftersom 32-bitars signerade heltal endast kan representera datum fram till den 19 januari 2038 (03:14:07 UTC).
När datorkrav utvecklades blev högre precisionstidsstämplar nödvändiga:
-
Millisekundprecision (13 siffror) blev vanlig med framväxten av interaktiv databehandling och behovet av att mäta användargränssnittets responsivitet.
-
Mikrosekundprecision (16 siffror) uppstod med högpresterande databehandling och system som krävde extremt noggrann tidtagning.
När Unix och Unix-liknande operativsystem blev populära blev Unix-tidsstämpeln en de facto-standard för att representera tid inom databehandling. Den antogs av många programmeringsspråk, databaser och applikationer, vilket sträcker sig långt bortom dess ursprungliga Unix-miljö.
Moderna system använder i allt högre grad 64-bitars heltal för tidsstämplar, vilket utökar det representerbara intervallet till cirka 292 miljarder år i båda riktningarna från epoch, vilket effektivt löser År 2038-problemet. Emellertid kan äldre system och applikationer fortfarande vara sårbara.
Unix-tidsstämpelns enkelhet och nytta har säkerställt dess fortsatta relevans trots utvecklingen av mer sofistikerade tidsrepresentationsformat. Den förblir ett grundläggande koncept inom databehandling, som ligger till grund för mycket av vår digitala infrastruktur.
Kodexempel
Här är exempel på hur man konverterar Unix-tidsstämplar av olika precisioner till människoläsbara datum i olika programmeringsspråk:
1// JavaScript tidsstämpelkonvertering med automatisk formatdetektion
2function convertTimestamp(timestamp, use12Hour = false) {
3 // Konvertera sträng till nummer om det behövs
4 const numericTimestamp = Number(timestamp);
5
6 // Detektera tidsstämpelformat baserat på siffers längd
7 let date;
8 if (timestamp.length === 16) {
9 // Mikrosekundprecision (dela med 1 000 000 för att få sekunder)
10 date = new Date(numericTimestamp / 1000);
11 console.log("Upptäckte: Mikrosekundprecision tidsstämpel");
12 } else if (timestamp.length === 13) {
13 // Millisekundprecision
14 date = new Date(numericTimestamp);
15 console.log("Upptäckte: Millisekundprecision tidsstämpel");
16 } else if (timestamp.length === 10) {
17 // Standard Unix-tidsstämpel (sekunder)
18 date = new Date(numericTimestamp * 1000);
19 console.log("Upptäckte: Standard Unix tidsstämpel (sekunder)");
20 } else {
21 throw new Error("Ogiltigt tidsstämpelformat. Förväntade 10, 13 eller 16 siffror.");
22 }
23
24 // Formatalternativ
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 // Konvertera till sträng med hjälp av lokal formatering
37 return date.toLocaleString(undefined, options);
38}
39
40// Exempel på användning
41try {
42 // Standard Unix-tidsstämpel (10 siffror)
43 console.log(convertTimestamp("1609459200", false));
44
45 // Millisekundprecision (13 siffror)
46 console.log(convertTimestamp("1609459200000", false));
47
48 // Mikrosekundprecision (16 siffror)
49 console.log(convertTimestamp("1609459200000000", true));
50} catch (error) {
51 console.error(error.message);
52}
53
1# Python tidsstämpelkonvertering med automatisk formatdetektion
2import datetime
3
4def convert_timestamp(timestamp, use_12hour=False):
5 # Konvertera till heltal
6 timestamp = str(timestamp).strip()
7 numeric_timestamp = int(timestamp)
8
9 # Detektera tidsstämpelformat baserat på siffers längd
10 if len(timestamp) == 16:
11 # Mikrosekundprecision (dela med 1 000 000 för att få sekunder)
12 date = datetime.datetime.fromtimestamp(numeric_timestamp / 1000000)
13 print("Upptäckte: Mikrosekundprecision tidsstämpel")
14 elif len(timestamp) == 13:
15 # Millisekundprecision (dela med 1 000 för att få sekunder)
16 date = datetime.datetime.fromtimestamp(numeric_timestamp / 1000)
17 print("Upptäckte: Millisekundprecision tidsstämpel")
18 elif len(timestamp) == 10:
19 # Standard Unix-tidsstämpel (sekunder)
20 date = datetime.datetime.fromtimestamp(numeric_timestamp)
21 print("Upptäckte: Standard Unix tidsstämpel (sekunder)")
22 else:
23 raise ValueError("Ogiltigt tidsstämpelformat. Förväntade 10, 13 eller 16 siffror.")
24
25 # Formatera datumsträngen
26 if use_12hour:
27 format_string = "%A, %B %d, %Y %I:%M:%S %p" # 12-timmarsformat med AM/PM
28 else:
29 format_string = "%A, %B %d, %Y %H:%M:%S" # 24-timmarsformat
30
31 return date.strftime(format_string)
32
33# Exempel på användning
34try:
35 # Standard Unix-tidsstämpel (10 siffror)
36 print(convert_timestamp("1609459200", False))
37
38 # Millisekundprecision (13 siffror)
39 print(convert_timestamp("1609459200000", False))
40
41 # Mikrosekundprecision (16 siffror)
42 print(convert_timestamp("1609459200000000", True))
43except ValueError as e:
44 print(e)
45
1<?php
2// PHP tidsstämpelkonvertering med automatisk formatdetektion
3function convertTimestamp($timestamp, $use12Hour = false) {
4 // Se till att tidsstämpeln är en sträng för längdkontroll
5 $timestamp = trim((string)$timestamp);
6
7 // Detektera tidsstämpelformat baserat på siffers längd
8 if (strlen($timestamp) === 16) {
9 // Mikrosekundprecision (dela med 1 000 000 för att få sekunder)
10 $seconds = (float)$timestamp / 1000000;
11 echo "Upptäckte: Mikrosekundprecision tidsstämpel\n";
12 } elseif (strlen($timestamp) === 13) {
13 // Millisekundprecision
14 $seconds = (float)$timestamp / 1000;
15 echo "Upptäckte: Millisekundprecision tidsstämpel\n";
16 } elseif (strlen($timestamp) === 10) {
17 // Standard Unix-tidsstämpel (sekunder)
18 $seconds = (float)$timestamp;
19 echo "Upptäckte: Standard Unix tidsstämpel (sekunder)\n";
20 } else {
21 throw new Exception("Ogiltigt tidsstämpelformat. Förväntade 10, 13 eller 16 siffror.");
22 }
23
24 // Formatsträng
25 $formatString = $use12Hour
26 ? 'l, F j, Y g:i:s A' // 12-timmarsformat med AM/PM
27 : 'l, F j, Y H:i:s'; // 24-timmarsformat
28
29 // Konvertera och formatera datumet
30 return date($formatString, $seconds);
31}
32
33// Exempel på användning
34try {
35 // Standard Unix-tidsstämpel (10 siffror)
36 echo convertTimestamp("1609459200", false) . "\n";
37
38 // Millisekundprecision (13 siffror)
39 echo convertTimestamp("1609459200000", false) . "\n";
40
41 // Mikrosekundprecision (16 siffror)
42 echo convertTimestamp("1609459200000000", true) . "\n";
43} catch (Exception $e) {
44 echo $e->getMessage() . "\n";
45}
46?>
47
1// Java tidsstämpelkonvertering med automatisk formatdetektion
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 // Trimma inmatningen
10 timestamp = timestamp.trim();
11
12 // Detektera tidsstämpelformat baserat på siffers längd
13 LocalDateTime dateTime;
14 if (timestamp.length() == 16) {
15 // Mikrosekundprecision (dela med 1 000 000 för att få sekunder)
16 long microseconds = Long.parseLong(timestamp);
17 Instant instant = Instant.ofEpochSecond(0, microseconds * 1000); // Konvertera till nanosekunder
18 dateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
19 System.out.println("Upptäckte: Mikrosekundprecision tidsstämpel");
20 } else if (timestamp.length() == 13) {
21 // Millisekundprecision
22 long milliseconds = Long.parseLong(timestamp);
23 Instant instant = Instant.ofEpochMilli(milliseconds);
24 dateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
25 System.out.println("Upptäckte: Millisekundprecision tidsstämpel");
26 } else if (timestamp.length() == 10) {
27 // Standard Unix-tidsstämpel (sekunder)
28 long seconds = Long.parseLong(timestamp);
29 Instant instant = Instant.ofEpochSecond(seconds);
30 dateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
31 System.out.println("Upptäckte: Standard Unix tidsstämpel (sekunder)");
32 } else {
33 throw new IllegalArgumentException("Ogiltigt tidsstämpelformat. Förväntade 10, 13 eller 16 siffror.");
34 }
35
36 // Skapa formatterare baserat på önskat format
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 // Formatera datumet
42 return dateTime.format(formatter);
43 }
44
45 public static void main(String[] args) {
46 try {
47 // Standard Unix-tidsstämpel (10 siffror)
48 System.out.println(convertTimestamp("1609459200", false));
49
50 // Millisekundprecision (13 siffror)
51 System.out.println(convertTimestamp("1609459200000", false));
52
53 // Mikrosekundprecision (16 siffror)
54 System.out.println(convertTimestamp("1609459200000000", true));
55 } catch (IllegalArgumentException e) {
56 System.err.println(e.getMessage());
57 }
58 }
59}
60
1// C# tidsstämpelkonvertering med automatisk formatdetektion
2using System;
3
4class TimestampConverter
5{
6 public static string ConvertTimestamp(string timestamp, bool use12Hour)
7 {
8 // Trimma inmatningen
9 timestamp = timestamp.Trim();
10
11 // Detektera tidsstämpelformat baserat på siffers längd
12 DateTime dateTime;
13 if (timestamp.Length == 16)
14 {
15 // Mikrosekundprecision (dela med 1 000 000 för att få sekunder)
16 if (!double.TryParse(timestamp, out double microseconds))
17 throw new ArgumentException("Ogiltigt tidsstämpelformat");
18
19 // Konvertera mikrosekunder till DateTime
20 dateTime = DateTimeOffset.FromUnixTimeSeconds(0).DateTime.AddSeconds(microseconds / 1000000);
21 Console.WriteLine("Upptäckte: Mikrosekundprecision tidsstämpel");
22 }
23 else if (timestamp.Length == 13)
24 {
25 // Millisekundprecision
26 if (!long.TryParse(timestamp, out long milliseconds))
27 throw new ArgumentException("Ogiltigt tidsstämpelformat");
28
29 dateTime = DateTimeOffset.FromUnixTimeMilliseconds(milliseconds).DateTime;
30 Console.WriteLine("Upptäckte: Millisekundprecision tidsstämpel");
31 }
32 else if (timestamp.Length == 10)
33 {
34 // Standard Unix-tidsstämpel (sekunder)
35 if (!long.TryParse(timestamp, out long seconds))
36 throw new ArgumentException("Ogiltigt tidsstämpelformat");
37
38 dateTime = DateTimeOffset.FromUnixTimeSeconds(seconds).DateTime;
39 Console.WriteLine("Upptäckte: Standard Unix tidsstämpel (sekunder)");
40 }
41 else
42 {
43 throw new ArgumentException("Ogiltigt tidsstämpelformat. Förväntade 10, 13 eller 16 siffror.");
44 }
45
46 // Formatsträng baserat på 12-timmars eller 24-timmars preferens
47 string formatString = use12Hour
48 ? "dddd, MMMM d, yyyy h:mm:ss tt" // 12-timmarsformat med AM/PM
49 : "dddd, MMMM d, yyyy HH:mm:ss"; // 24-timmarsformat
50
51 // Returnera formaterad datumsträng
52 return dateTime.ToString(formatString);
53 }
54
55 static void Main()
56 {
57 try
58 {
59 // Standard Unix-tidsstämpel (10 siffror)
60 Console.WriteLine(ConvertTimestamp("1609459200", false));
61
62 // Millisekundprecision (13 siffror)
63 Console.WriteLine(ConvertTimestamp("1609459200000", false));
64
65 // Mikrosekundprecision (16 siffror)
66 Console.WriteLine(ConvertTimestamp("1609459200000000", true));
67 }
68 catch (ArgumentException e)
69 {
70 Console.WriteLine(e.Message);
71 }
72 }
73}
74
Hantera gränsfall
När man arbetar med Unix-tidsstämplar av olika precisioner är det viktigt att hantera gränsfall korrekt. Här är ett exempel som demonstrerar omfattande hantering av gränsfall:
1// JavaScript omfattande hantering av gränsfall för flera tidsstämpelformat
2function safeConvertTimestamp(timestamp, use12Hour = false) {
3 // Inmatningsvalidering
4 if (timestamp === undefined || timestamp === null || timestamp === '') {
5 return "Fel: Tom eller odefinierad tidsstämpel";
6 }
7
8 // Se till att tidsstämpeln är en sträng för längdkontroll
9 const timestampStr = String(timestamp).trim();
10
11 // Kontrollera om tidsstämpeln endast innehåller siffror
12 if (!/^\d+$/.test(timestampStr)) {
13 return "Fel: Tidsstämpeln måste endast innehålla siffror";
14 }
15
16 // Detektera format baserat på längd
17 let date;
18 try {
19 if (timestampStr.length === 16) {
20 // Mikrosekundprecision
21 const microseconds = Number(timestampStr);
22 date = new Date(microseconds / 1000); // Konvertera till millisekunder
23 console.log("Bearbetar mikrosekundstidsstämpel (16 siffror)");
24
25 // Kontrollera för ogiltigt datum
26 if (isNaN(date.getTime())) {
27 return "Fel: Ogiltig mikrosekundstidsstämpel";
28 }
29 } else if (timestampStr.length === 13) {
30 // Millisekundprecision
31 const milliseconds = Number(timestampStr);
32 date = new Date(milliseconds);
33 console.log("Bearbetar millisekundstidsstämpel (13 siffror)");
34
35 // Kontrollera för ogiltigt datum
36 if (isNaN(date.getTime())) {
37 return "Fel: Ogiltig millisekundstidsstämpel";
38 }
39 } else if (timestampStr.length === 10) {
40 // Standard Unix-tidsstämpel (sekunder)
41 const seconds = Number(timestampStr);
42 date = new Date(seconds * 1000);
43 console.log("Bearbetar standardtidsstämpel (10 siffror)");
44
45 // Kontrollera för ogiltigt datum
46 if (isNaN(date.getTime())) {
47 return "Fel: Ogiltig standardtidsstämpel";
48 }
49
50 // Kontrollera för Y2K38-problemet (för 32-bitars system)
51 const maxInt32 = 2147483647; // Maximalt värde för 32-bitars signerade heltal
52 if (seconds > maxInt32) {
53 console.warn("Varning: Tidsstämpeln överskrider 32-bitars heltalsgräns (Y2K38-problem)");
54 }
55 } else {
56 return "Fel: Ogiltig tidsstämpellängd. Förväntade 10, 13 eller 16 siffror.";
57 }
58
59 // Formatera datumet
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 "Fel vid konvertering av tidsstämpel: " + error.message;
74 }
75}
76
77// Testa med olika gränsfall
78console.log(safeConvertTimestamp("1609459200")); // Standard (10 siffror)
79console.log(safeConvertTimestamp("1609459200000")); // Millisekunder (13 siffror)
80console.log(safeConvertTimestamp("1609459200000000")); // Mikrosekunder (16 siffror)
81console.log(safeConvertTimestamp("abc123")); // Icke-numerisk
82console.log(safeConvertTimestamp("12345")); // Ogiltig längd
83console.log(safeConvertTimestamp("9999999999999999")); // Mycket stor mikrosekundstidsstämpel
84console.log(safeConvertTimestamp("")); // Tom sträng
85
Vanliga frågor
Vad är en Unix-tidsstämpel?
En Unix-tidsstämpel är antalet sekunder som har förflutit sedan den 1 januari 1970 (midnatt UTC/GMT), utan att räkna med skottsekunder. Den ger en kompakt, språkoberoende representation av ett specifikt ögonblick i tiden.
Hur fungerar den automatiska tidsstämpelformatdetektionen?
Omvandlaren upptäcker automatiskt tidsstämpelformatet baserat på antalet siffror:
- 10 siffror: Standard Unix-tidsstämpel (sekunder sedan epoch)
- 13 siffror: Millisekundprecisionstidsstämpel
- 16 siffror: Mikrosekundprecisionstidsstämpel
Varför skulle jag behöva millisekund- eller mikrosekundprecision?
Millisekundprecision (13 siffror) är användbart för applikationer som kräver mer exakt tidtagning, såsom prestandaövervakning, spårning av användarinteraktion och vissa finansiella applikationer. Mikrosekundprecision (16 siffror) är nödvändig för högpresterande databehandling, vetenskapliga tillämpningar och högfrekvent handelssystem där extremt noggrann tidtagning är kritisk.
Kan jag konvertera datum före 1970 med Unix-tidsstämplar?
Ja, datum före den 1 januari 1970 representeras med negativa tidsstämplar. Men vissa system kanske inte hanterar negativa tidsstämplar korrekt, så det är viktigt att testa denna funktionalitet om du behöver arbeta med historiska datum.
Vad är År 2038-problemet?
År 2038-problemet uppstår eftersom många system lagrar Unix-tidsstämplar som 32-bitars signerade heltal, vilket endast kan representera datum fram till den 19 januari 2038 (03:14:07 UTC). Efter denna tidpunkt kommer heltalet att överflöda, vilket potentiellt kan orsaka systemfel. Moderna system använder i allt högre grad 64-bitars heltal för att undvika detta problem.
Hur hanterar jag tidszonskonverteringar med Unix-tidsstämplar?
Unix-tidsstämplar är alltid i UTC (Coordinated Universal Time). För att konvertera till en specifik tidszon måste du tillämpa den lämpliga offseten efter att ha konverterat tidsstämpeln till ett datum. De flesta programmeringsspråk tillhandahåller inbyggda funktioner för att hantera tidszonskonverteringar.
Vad är skillnaden mellan Unix-tid och ISO 8601?
Unix-tid är en numerisk representation (sekunder sedan epoch), medan ISO 8601 är ett strängformat (t.ex. "2021-01-01T00:00:00Z"). Unix-tid är mer kompakt och enklare att använda för beräkningar, medan ISO 8601 är mer människoläsbart och självbeskrivande.
Hur noggranna är Unix-tidsstämplar?
Standard Unix-tidsstämplar har precision på sekundsnivå. För applikationer som kräver större noggrannhet ger millisekundtidsstämplar (13 siffror) precision på 1/1000 sekund, och mikrosekundtidsstämplar (16 siffror) ger precision på 1/1,000,000 sekund.
Tar Unix-tidsstämplar hänsyn till skottsekunder?
Nej, Unix-tid definieras som antalet sekunder sedan epoch, utan att ta hänsyn till skottsekunder. Detta betyder att under en skottsekund ökar inte Unix-tidsstämpeln. Detta kan orsaka problem i applikationer som kräver exakt astronomisk tid.
Kan jag använda Unix-tidsstämplar för att schemalägga framtida händelser?
Ja, Unix-tidsstämplar används ofta för schemaläggning. Men för mycket långt in i framtiden, var medveten om potentiella begränsningar som År 2038-problemet för 32-bitars system och hanteringen av tidszonsändringar och övergångar till sommartid.
Referenser
-
"Unix Time." Wikipedia, Wikimedia Foundation, https://en.wikipedia.org/wiki/Unix_time
-
"År 2038 Problem." Wikipedia, Wikimedia Foundation, https://en.wikipedia.org/wiki/Year_2038_problem
-
Olson, Arthur David. "The Complexities of Calendrical Time." 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: Date and Time on the Internet: Timestamps." Internet Engineering Task Force (IETF), https://tools.ietf.org/html/rfc3339
-
Kernighan, Brian W., och Dennis M. Ritchie. "The C Programming Language." Prentice Hall, 1988.
-
"Precision Timing in High-Performance Computing." ACM Computing Surveys, https://dl.acm.org/doi/10.1145/3232678
-
"Tidsrepresentation i Finansiella System." Journal of Financial Technology, https://www.fintech-journal.com/time-representation
Prova vår tidsstämpelkonverterare nu för att enkelt konvertera Unix-tidsstämplar av alla precisioner till människoläsbara datum. Oavsett om du arbetar med standard Unix-tidsstämplar, millisekundprecision eller mikrosekundprecision, upptäcker vårt verktyg automatiskt formatet och ger exakta konverteringar.
Återkoppling
Klicka på feedback-toasten för att börja ge feedback om detta verktyg
Relaterade verktyg
Upptäck fler verktyg som kan vara användbara för din arbetsflöde