Convertor de Timestamp Unix în Dată: Suport pentru Format de 12/24 Ore
Convertește timestamp-urile Unix în date și ore ușor de citit. Alege între formatele de timp de 12 ore și 24 ore cu acest instrument simplu și prietenos.
Converter de Timestamp Unix
Data și Ora Convertită
Documentație
Convertor de Timestamp Unix
Introducere
Un timestamp Unix (cunoscut și sub numele de timp POSIX sau timp Epoch) este un sistem pentru descrierea unui punct în timp. Este numărul de secunde care au trecut de la 1 ianuarie 1970 (miezul nopții UTC/GMT), fără a lua în considerare secunde intercalare. Timestamps Unix sunt utilizate pe scară largă în sistemele de calcul și limbajele de programare, deoarece oferă o reprezentare compactă, independentă de limbaj, a unui moment specific în timp.
Acest convertor vă permite să transformați un timestamp Unix într-un format de dată și oră ușor de citit. Suportă atât formatul de 12 ore (AM/PM), cât și formatul de 24 de ore pentru a se adapta diferitelor preferințe regionale și personale.
Cum funcționează Timestamps Unix
Timestamps Unix sunt calculate ca numărul de secunde de la Epoch Unix (1 ianuarie 1970, 00:00:00 UTC). Acest lucru le face deosebit de utile pentru calcularea diferențelor de timp și pentru stocarea datelor într-un format compact.
Conversia matematică de la un timestamp Unix la o dată calendaristică implică mai mulți pași:
- Începeți cu Epoch Unix (1 ianuarie 1970, 00:00:00 UTC)
- Adăugați numărul de secunde din timestamp
- Luați în considerare anii bisecți, lungimile variate ale lunilor și alte complexități ale calendarului
- Aplicați ajustările de fus orar, dacă este necesar
De exemplu, timestampul Unix 1609459200
reprezintă vineri, 1 ianuarie 2021, 00:00:00 UTC.
Formula de conversie poate fi exprimată ca:
Cele mai multe limbaje de programare și sisteme de operare oferă funcții încorporate pentru a gestiona această conversie, abstractizând calculele complexe ale calendarului.
Opțiuni de Format pentru Timp
Acest convertor oferă două opțiuni de format pentru timp:
-
Format de 24 de ore (cunoscut și sub numele de "timp militar"): Orele variază de la 0 la 23, iar nu există denumirea AM/PM. De exemplu, 15:00 este reprezentat ca 15:00.
-
Format de 12 ore: Orele variază de la 1 la 12, cu AM (ante meridiem) pentru orele de la miezul nopții până la prânz și PM (post meridiem) pentru orele de la prânz până la miezul nopții. De exemplu, 15:00 în format de 24 de ore este reprezentat ca 3:00 PM.
Alegerea între aceste formate este în mare parte o chestiune de convenție regională și preferință personală:
- Formatul de 24 de ore este utilizat în mod obișnuit în cea mai mare parte a Europei, Americii Latine și Asiei, precum și în contexte științifice, militare și medicale din întreaga lume.
- Formatul de 12 ore este prevalent în Statele Unite, Canada, Australia și în alte țări vorbitoare de limbă engleză pentru utilizarea de zi cu zi.
Cazuri Limite și Limitări
Atunci când lucrați cu timestamps Unix, este important să fiți conștienți de mai multe cazuri limită și limitări:
-
Timestamps negative: Acestea reprezintă date înainte de Epoch Unix (1 ianuarie 1970). Deși sunt valide din punct de vedere matematic, unele sisteme s-ar putea să nu gestioneze corect timestamps negative.
-
Problema Anului 2038: Timestamps Unix sunt adesea stocate ca întregi semnați de 32 de biți, care vor depăși limita pe 19 ianuarie 2038. După acest punct, sistemele pe 32 de biți nu vor putea reprezenta corect timpii decât dacă sunt modificate pentru a utiliza un tip de întreg mai mare.
-
Timestamps extrem de mari: Datele foarte îndepărtate în viitor pot să nu fie reprezentabile în unele sisteme sau pot fi gestionate inconsistent.
-
Secunde intercalare: Timpul Unix nu ține cont de secunde intercalare, care sunt adăugate ocazional la UTC pentru a compensa rotația neregulată a Pământului. Acest lucru înseamnă că timpul Unix nu este sincronizat precis cu timpul astronomic.
-
Considerații de fus orar: Timestamps Unix reprezintă momente în UTC. Conversia la ora locală necesită informații suplimentare despre fusul orar.
-
Ora de vară: Atunci când se convertește timestamps în ora locală, trebuie luate în considerare complexitățile tranzițiilor de ora de vară.
Cazuri de Utilizare
Timestamps Unix sunt utilizate în numeroase aplicații în domeniul informatic și gestionarea datelor:
-
Înregistrări de baze de date: Timestamps sunt folosite frecvent pentru a înregistra când au fost create sau modificate intrările.
-
Dezvoltare web: Header-ele HTTP, cookie-urile și mecanismele de cache folosesc adesea timestamps Unix.
-
Fișiere de jurnal: Jurnalele de sistem înregistrează de obicei evenimente cu timestamps Unix pentru o ordonare cronologică precisă.
-
Sisteme de control al versiunilor: Git și alte VCS folosesc timestamps pentru a înregistra când au fost efectuate commit-uri.
-
Răspunsuri API: Multe API-uri web includ timestamps în răspunsurile lor pentru a indica când au fost generate datele sau când resursele au fost modificate ultima dată.
-
Sisteme de fișiere: Timpurile de creare și modificare a fișierelor sunt adesea stocate ca timestamps Unix.
-
Gestionarea sesiunilor: Aplicațiile web folosesc timestamps pentru a determina când sesiunile utilizatorilor ar trebui să expire.
-
Analiza datelor: Timestamps oferă o modalitate standardizată de a lucra cu date temporale în aplicațiile de analiză.
Alternative
Deși timestamps Unix sunt utilizate pe scară largă, există formate alternative de reprezentare a timpului care pot fi mai adecvate în anumite contexte:
-
ISO 8601: Un format de șir standardizat (de exemplu, "2021-01-01T00:00:00Z") care este ușor de citit de oameni, păstrând în același timp sortabilitatea. Este adesea preferat pentru schimbul de date și aplicațiile orientate către utilizatori.
-
RFC 3339: Un profil al ISO 8601 utilizat în protocoalele de internet, cu cerințe de formatare mai stricte.
-
Formate ușor de citit: Șirurile de date localizate (de exemplu, "1 ianuarie 2021") sunt mai adecvate pentru interacțiunea directă cu utilizatorul, dar sunt mai puțin potrivite pentru calcul.
-
Microsoft FILETIME: O valoare de 64 de biți care reprezintă numărul de intervale de 100 de nanosecunde de la 1 ianuarie 1601, utilizată în sistemele Windows.
-
Numărul de zi iulian: Utilizat în astronomie și în unele aplicații științifice, numărând zilele de la 1 ianuarie 4713 î.Hr.
Alegerea formatului de timp depinde de factori precum:
- Precizia necesară
- Nevoile de citire umană
- Constrângerile de stocare
- Compatibilitatea cu sistemele existente
- Intervalul de date care trebuie reprezentat
Istorie
Conceptul de timp Unix a apărut odată cu dezvoltarea sistemului de operare Unix la Bell Labs în sfârșitul anilor 1960 și începutul anilor 1970. Decizia de a folosi 1 ianuarie 1970 ca epoch a fost oarecum arbitrară, dar practică pentru acea vreme - era suficient de recentă pentru a minimiza cerințele de stocare pentru datele de interes, dar suficient de îndepărtată în trecut pentru a fi utilă pentru datele istorice.
Implementarea originală a folosit un întreg semnat de 32 de biți pentru a stoca numărul de secunde, ceea ce era adecvat pentru durata de viață a sistemelor Unix așteptate la acea vreme. Cu toate acestea, această decizie a dus la Problema Anului 2038 (cunoscută uneori sub numele de "Y2K38" sau "Bugul Mileniului Unix"), deoarece întregii semnați de 32 de biți pot reprezenta doar date până la 19 ianuarie 2038 (03:14:07 UTC).
Pe măsură ce Unix și sistemele Unix-like au câștigat popularitate, timestampul Unix a devenit un standard de facto pentru reprezentarea timpului în informatică. A fost adoptat de numeroase limbaje de programare, baze de date și aplicații, extinzându-se mult dincolo de mediul său original Unix.
Sistemele moderne folosesc din ce în ce mai mult întregi de 64 de biți pentru timestamps, ceea ce extinde intervalul reprezentabil la aproximativ 292 de miliarde de ani în ambele direcții de la epoch, rezolvând efectiv problema anului 2038. Cu toate acestea, sistemele și aplicațiile legacy pot fi încă vulnerabile.
Simplitatea și utilitatea timestampului Unix au asigurat relevanța sa continuă, în ciuda dezvoltării unor formate de reprezentare a timpului mai sofisticate. Rămâne un concept fundamental în informatică, stând la baza unei mari părți a infrastructurii noastre digitale.
Exemple de Cod
Iată exemple de cum să convertiți timestamps Unix în date ușor de citit în diferite limbaje de programare:
1// Conversia timestamp-ului în JavaScript
2function convertUnixTimestamp(timestamp, use12Hour = false) {
3 // Creați un nou obiect Date (JavaScript folosește milisecunde)
4 const date = new Date(timestamp * 1000);
5
6 // Opțiuni de formatare
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 // Convertiți în șir folosind formatarea locală
19 return date.toLocaleString(undefined, options);
20}
21
22// Exemplu de utilizare
23const timestamp = 1609459200; // 1 ianuarie 2021 00:00:00 UTC
24console.log(convertUnixTimestamp(timestamp, false)); // Format de 24 de ore
25console.log(convertUnixTimestamp(timestamp, true)); // Format de 12 ore
26
1# Conversia timestamp-ului în Python
2import datetime
3
4def convert_unix_timestamp(timestamp, use_12hour=False):
5 # Convertiți timestamp-ul Unix în obiect datetime
6 date = datetime.datetime.fromtimestamp(timestamp)
7
8 # Formatați șirul de dată
9 if use_12hour:
10 format_string = "%A, %B %d, %Y %I:%M:%S %p" # Format de 12 ore cu AM/PM
11 else:
12 format_string = "%A, %B %d, %Y %H:%M:%S" # Format de 24 de ore
13
14 return date.strftime(format_string)
15
16# Exemplu de utilizare
17timestamp = 1609459200 # 1 ianuarie 2021 00:00:00 UTC
18print(convert_unix_timestamp(timestamp, False)) # Format de 24 de ore
19print(convert_unix_timestamp(timestamp, True)) # Format de 12 ore
20
1<?php
2// Conversia timestamp-ului în PHP
3function convertUnixTimestamp($timestamp, $use12Hour = false) {
4 // Șir de formatare
5 $formatString = $use12Hour
6 ? 'l, F j, Y g:i:s A' // Format de 12 ore cu AM/PM
7 : 'l, F j, Y H:i:s'; // Format de 24 de ore
8
9 // Convertiți și formatați data
10 return date($formatString, $timestamp);
11}
12
13// Exemplu de utilizare
14$timestamp = 1609459200; // 1 ianuarie 2021 00:00:00 UTC
15echo convertUnixTimestamp($timestamp, false) . "\n"; // Format de 24 de ore
16echo convertUnixTimestamp($timestamp, true) . "\n"; // Format de 12 ore
17?>
18
1// Conversia timestamp-ului în Java
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 // Convertiți timestamp-ul Unix în Instant, apoi în LocalDateTime
10 Instant instant = Instant.ofEpochSecond(timestamp);
11 LocalDateTime dateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
12
13 // Creați formator în funcție de formatul dorit
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 // Formatați data
19 return dateTime.format(formatter);
20 }
21
22 public static void main(String[] args) {
23 long timestamp = 1609459200; // 1 ianuarie 2021 00:00:00 UTC
24 System.out.println(convertUnixTimestamp(timestamp, false)); // Format de 24 de ore
25 System.out.println(convertUnixTimestamp(timestamp, true)); // Format de 12 ore
26 }
27}
28
1// Conversia timestamp-ului în C#
2using System;
3
4class UnixTimestampConverter
5{
6 public static string ConvertUnixTimestamp(long timestamp, bool use12Hour)
7 {
8 // Convertiți timestamp-ul Unix în DateTime
9 // Timpul Unix este în secunde de la 1970-01-01
10 DateTime dateTime = DateTimeOffset.FromUnixTimeSeconds(timestamp).DateTime;
11
12 // Șir de formatare bazat pe preferința de 12 ore sau 24 de ore
13 string formatString = use12Hour
14 ? "dddd, MMMM d, yyyy h:mm:ss tt" // Format de 12 ore cu AM/PM
15 : "dddd, MMMM d, yyyy HH:mm:ss"; // Format de 24 de ore
16
17 // Returnați șirul de dată formatat
18 return dateTime.ToString(formatString);
19 }
20
21 static void Main()
22 {
23 long timestamp = 1609459200; // 1 ianuarie 2021 00:00:00 UTC
24 Console.WriteLine(ConvertUnixTimestamp(timestamp, false)); // Format de 24 de ore
25 Console.WriteLine(ConvertUnixTimestamp(timestamp, true)); // Format de 12 ore
26 }
27}
28
1# Conversia timestamp-ului în Ruby
2require 'time'
3
4def convert_unix_timestamp(timestamp, use_12hour = false)
5 # Convertiți timestamp-ul Unix în obiect Time
6 time = Time.at(timestamp)
7
8 # Formatați în funcție de preferința de 12 ore sau 24 de ore
9 if use_12hour
10 time.strftime("%A, %B %d, %Y %I:%M:%S %p") # Format de 12 ore cu AM/PM
11 else
12 time.strftime("%A, %B %d, %Y %H:%M:%S") # Format de 24 de ore
13 end
14end
15
16# Exemplu de utilizare
17timestamp = 1609459200 # 1 ianuarie 2021 00:00:00 UTC
18puts convert_unix_timestamp(timestamp, false) # Format de 24 de ore
19puts convert_unix_timestamp(timestamp, true) # Format de 12 ore
20
1// Conversia timestamp-ului în Go
2package main
3
4import (
5 "fmt"
6 "time"
7)
8
9func convertUnixTimestamp(timestamp int64, use12Hour bool) string {
10 // Convertiți timestamp-ul Unix în Time
11 t := time.Unix(timestamp, 0)
12
13 // Șir de formatare bazat pe preferința de 12 ore sau 24 de ore
14 formatString := "Monday, January 2, 2006 "
15 if use12Hour {
16 formatString += "3:04:05 PM" // Format de 12 ore cu AM/PM
17 } else {
18 formatString += "15:04:05" // Format de 24 de ore
19 }
20
21 // Returnați timpul formatat
22 return t.Format(formatString)
23}
24
25func main() {
26 timestamp := int64(1609459200) // 1 ianuarie 2021 00:00:00 UTC
27 fmt.Println(convertUnixTimestamp(timestamp, false)) // Format de 24 de ore
28 fmt.Println(convertUnixTimestamp(timestamp, true)) // Format de 12 ore
29}
30
1// Conversia timestamp-ului în Swift
2import Foundation
3
4func convertUnixTimestamp(_ timestamp: Int, use12Hour: Bool) -> String {
5 // Creați Date din timestamp-ul Unix
6 let date = Date(timeIntervalSince1970: TimeInterval(timestamp))
7
8 // Creați DateFormatter
9 let formatter = DateFormatter()
10 formatter.dateStyle = .full
11
12 // Setează stilul timpului în funcție de preferința de 12 ore sau 24 de ore
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 // Returnați data formatată
23 return formatter.string(from: date)
24}
25
26// Exemplu de utilizare
27let timestamp = 1609459200 // 1 ianuarie 2021 00:00:00 UTC
28print(convertUnixTimestamp(timestamp, use12Hour: false)) // Format de 24 de ore
29print(convertUnixTimestamp(timestamp, use12Hour: true)) // Format de 12 ore
30
1# Conversia timestamp-ului în R
2convert_unix_timestamp <- function(timestamp, use_12hour = FALSE) {
3 # Convertiți timestamp-ul Unix în datetime POSIXct
4 date_time <- as.POSIXct(timestamp, origin = "1970-01-01", tz = "UTC")
5
6 # Formatați în funcție de preferința de 12 ore sau 24 de ore
7 if (use_12hour) {
8 format_string <- "%A, %B %d, %Y %I:%M:%S %p" # Format de 12 ore cu AM/PM
9 } else {
10 format_string <- "%A, %B %d, %Y %H:%M:%S" # Format de 24 de ore
11 }
12
13 # Returnați șirul de dată formatat
14 format(date_time, format_string)
15}
16
17# Exemplu de utilizare
18timestamp <- 1609459200 # 1 ianuarie 2021 00:00:00 UTC
19cat(convert_unix_timestamp(timestamp, FALSE), "\n") # Format de 24 de ore
20cat(convert_unix_timestamp(timestamp, TRUE), "\n") # Format de 12 ore
21
1% Conversia timestamp-ului în MATLAB
2function formattedDate = convertUnixTimestamp(timestamp, use12Hour)
3 % Convertiți timestamp-ul Unix în datetime MATLAB
4 % Datele Excel sunt zile de la 1900-01-01, cu 1 = 1900-01-01
5 % Timpul Unix este în secunde de la 1970-01-01
6
7 % Mai întâi convertiți în format de dată Excel
8 % 25569 este numărul de zile între 1900-01-01 și 1970-01-01
9 excelDate = (timestamp / 86400) + 25569;
10
11 % Formatați în funcție de preferința de 12 ore sau 24 de ore
12 if use12Hour
13 formattedDate = datestr(excelDate, 'dddd, mmmm d, yyyy h:mm:ss AM/PM');
14 else
15 formattedDate = datestr(excelDate, 'dddd, mmmm d, yyyy hh:mm:ss');
16 end
17end
18
19% Exemplu de utilizare
20timestamp = 1609459200; % 1 ianuarie 2021 00:00:00 UTC
21disp(convertUnixTimestamp(timestamp, false)) % Format de 24 de ore
22disp(convertUnixTimestamp(timestamp, true)) % Format de 12 ore
23
1' Conversia timestamp-ului în Excel VBA
2Function ConvertUnixTimestamp(timestamp As Long, Optional use12Hour As Boolean = False) As String
3 ' Convertiți timestamp-ul Unix în dată/oră Excel
4 ' Datele Excel sunt zile de la 1900-01-01, cu 1 = 1900-01-01
5 ' Timpul Unix este în secunde de la 1970-01-01
6
7 ' Mai întâi convertiți în format de dată Excel
8 ' 25569 este numărul de zile între 1900-01-01 și 1970-01-01
9 Dim excelDate As Double
10 excelDate = (timestamp / 86400) + 25569
11
12 ' Formatați data în funcție de preferința de 12 ore sau 24 de ore
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' Utilizare într-o foaie de lucru:
21' =ConvertUnixTimestamp(1609459200, TRUE) ' Format de 12 ore
22' =ConvertUnixTimestamp(1609459200, FALSE) ' Format de 24 de ore
23
Gestionarea Cazurilor Limite
Atunci când lucrați cu timestamps Unix, este important să gestionați corect cazurile limită. Iată exemple de gestionare a unor cazuri limită comune:
1// Gestionarea cazurilor limită în JavaScript
2function safeConvertTimestamp(timestamp, use12Hour = false) {
3 // Verificați dacă timestamp-ul este valid
4 if (timestamp === undefined || timestamp === null || isNaN(timestamp)) {
5 return "Timestamp invalid";
6 }
7
8 // Verificați pentru timestamps negative (date înainte de 1970)
9 if (timestamp < 0) {
10 // Unele browsere s-ar putea să nu gestioneze corect timestamps negative
11 // Folosiți o abordare mai robustă pentru datele înainte de 1970
12 const date = new Date(timestamp * 1000);
13 if (isNaN(date.getTime())) {
14 return "Dată invalidă (înainte de 1970)";
15 }
16 }
17
18 // Verificați pentru problema Y2K38 (pentru sisteme de 32 de biți)
19 const maxInt32 = 2147483647; // Valoarea maximă pentru întreg semnat de 32 de biți
20 if (timestamp > maxInt32) {
21 // Luați în considerare utilizarea BigInt pentru timestamps foarte mari în JavaScript modern
22 console.warn("Timestamp-ul depășește limita întregului de 32 de biți (problemă Y2K38)");
23 }
24
25 // Continuați cu conversia normală
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 "Eroare la conversia timestamp-ului: " + error.message;
41 }
42}
43
Referințe
-
"Timp Unix." Wikipedia, Wikimedia Foundation, https://en.wikipedia.org/wiki/Unix_time
-
"Problema Anului 2038." Wikipedia, Wikimedia Foundation, https://en.wikipedia.org/wiki/Year_2038_problem
-
Olson, Arthur David. "Complexitățile Timpului Calendaristic." 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: Data și Timp pe Internet: Timestamps." Internet Engineering Task Force (IETF), https://tools.ietf.org/html/rfc3339
-
Kernighan, Brian W., și Dennis M. Ritchie. "Limbajul de Programare C." Prentice Hall, 1988.
Feedback
Click pe toast-ul de feedback pentru a începe să oferi feedback despre acest instrument
Instrumente Asemănătoare
Descoperă mai multe instrumente care ar putea fi utile pentru fluxul tău de lucru