Una Guia per a Desenvolupadors sobre el Convertidor de Timestamp Unix
Domina el convertidor de timestamps Unix. Aprèn a convertir el temps d'epoch en dates llegibles per humans, gestiona diferents idiomes i evita errors comuns dels desenvolupadors.

Extensions recomanades
Un convertidor de marques de temps Unix és una d'aquelles eines senzilles però indispensables que trobareu constantment si sou desenvolupador o analista de dades. És una utilitat molt pràctica que transforma un número llarg i aparentment aleatori en una data i hora que podem entendre realment. Aquesta traducció és crucial quan esteu explorant registres del sistema, treballant amb API o consultant bases de dades on el temps s'emmagatzema en aquest format super eficient.
Què és una marca de temps Unix i per què és important

Abans de poder apreciar realment un bon convertidor, heu de entendre què és realment aquest número ( ). En el seu nucli, una marca de temps Unix és simplement un recompte continu de segons. Rastreja el nombre total de segons que han passat des de les 00:00:00 UTC de l'1 de gener de 1970 . Aquest moment específic en el temps és conegut popularment com a "era Unix."
Per què aquest mètode? Simplicitat i eficiència. Emmmagatzemar el temps com un sol enters és molt més compacte i eficaç que una cadena de text llarga com "divendres, 1 de gener de 2021, 12:00:00 AM GMT". Això el fa perfecte per a algunes àrees clau:
- Emmmagatzematge en bases de dades : Les marques de temps són petites, cosa que fa que siguin ràpides d'indexar i consultar. És una gran victòria per al rendiment.
- Càrregues d'API: Enviar un sol número d'anada i tornada consumeix molt menys ample de banda que enviar una cadena de data completa, donant lloc a temps de resposta més ràpids.
- Fitxers de registre: Quan esteu analitzant registres de dotzenes de sistemes diferents, tenir una marca de temps uniforme i independent de l'idioma és una salvaguarda.
- Càlculs: Voleu saber quant va durar un procés? Simplement resteu la marca de temps d'inici de la de final. És una operació aritmètica d'enters senzilla.
Segons vs. Mil·lisegons i més enllà
La marca de temps Unix clàssica és un número de 10 dígits que representa segons. Però a mesura que la tecnologia va evolucionar, va créixer la necessitat d'un seguiment del temps més granular. Aquí és on començareu a veure diferents longituds de marques de temps, i és un obstacle comú.
Aquí teniu una petita descripció del que trobareu típicament en el món real. Confondre'n una per l'altra és un error clàssic de "per mil" que pot portar a errors molt confusos.
Formats comuns de marques de temps Unix, a un cop d'ull
| Unitat | Dígits | Cas d'ús típic | Valor d'exemple (per al mateix moment) |
|---|---|---|---|
| Segons | 10 | Estàndard per a la majoria de sistemes back-end, bases de dades i API. | 1609459200 |
| Mil·lisegons | 13 | Molt comú a la web, especialment amb JavaScript. | 1609459200000 |
| Microsegons | 16 | Utilitzat en comerç d'alta freqüència o computació científica. | 1609459200000000 |
Tenir clars aquests formats és clau. Si una eina espera segons i vostès li facilita mil·lisegons, obtindran una data que està a milers d'anys en el futur. És un error que tots hem comès en algun moment!
El famós problema de l'any 2038
L'elegant simplicitat de la marca de temps Unix també va crear una bomba de rellotgeria: el "problema de l'any 2038." En els sistemes més antics de 32 bits , les marques de temps s'emmagatzemaven com un enters signat de 32 bits. El problema és que aquest tipus d'enter té un límit: no pot contenir un número més gran que 2,147,483,647.
El 19 de gener de 2038, a les 03:14:07 UTC, el nombre de segons des de l'època superarà aquest límit. Quan això passi, l'enter "tornarà a començar" i es convertirà en un número negatió. Això faria que els sistemes vulnerables interpretessin la data com si estigués de nou a 1901, cosa que podria fer caure milers de milions de dispositius obsolets que encara són en ús. Podeu obtenir més informació sobre l'època Unix i el seu impacte dels experts de StrongDM.
Afortunadament, això no és alguna cosa que la majoria de nosaltres haguem de preocupar-nos cada dia. La gran majoria dels sistemes moderns han passat a utilitzar enters de 64 bits per al cronometratge. Un enter de 64 bits és tan massiu que no desbordarà fins d'aquí a 292 mil milions d'anys, resolent el problema de manera efectiva i per sempre.
Tanmateix, és una fantàstica anècdota de la història de la informàtica i una peça de coneixement essencial si mai us trobeu treballant en sistemes incrustats antics o en bases de codi obsoletes. Entendre aquests fonaments fa que qualsevol convertidor de marques de temps Unix sigui una eina molt més poderosa a les vostres mans.
Fent les converses sense esforç al vostre navegador
Tot i que utilitzar una ordre de terminal o un fragment de codi funciona, no és sempre la manera més ràpida de fer les coses. De vegades, simplement necessiteu una resposta ara mateix, sense trencar la vostra concentració ni canviar de finestra. Aquí és on una bona eina basada en el navegador demostra realment el seu valor, especialment un convertidor de marques de temps Unix dedicat que viu directament dins del vostre navegador.
La veritable màgia aquí rau en mantenir-vos en el flux. Imagineu-vos: esteu navegant per una resposta d'una API a les eines de desenvolupador del vostre navegador i veieu una marca de temps. En lloc d'obrir una altra pestanya o llançar una terminal, premeu una drecera de teclat ràpida, enganxeu el número i obteniu la vostra resposta a l'instant. Aquesta és la mena de flux de treball fluid que obteniu amb eines com les extensions ShiftShift, que empaqueten un munt d'utilitats pràctiques en una sola Paleta de Comandes.
Obteniu respostes instantànies amb una drecera de teclat
Tot es redueix a la velocitat. Amb una eina com ShiftShift, un doble toc ràpid de la tecla Shift (o Cmd+Shift+P en un Mac) obre una barra de comandes. Simplement comenceu a escriure "timestamp" i apareix el convertidor. Enganxeu el vostre valor i teniu una data llegible per humans a l'instant.
Això és el que sembla: la Paleta de Comandes està preparada i esperant per convertir una marca de temps just a sobre de la vostra pàgina actual.
La millor part és com s'integra sense obstaculitzar el vostre camí. El convertidor és només una de les moltes eines disponibles al mateix overlay, de manera que mai no heu de sortir d'allò que esteu fent.
Aquest enfocament és una benedicció per als desenvolupadors, provadors i qualsevol altra persona que pràcticament viu al seu navegador. A més, la conversió es produeix completament a la vostra màquina. Les dades sensibles dels registres o les respostes d'API mai no surten del vostre ordinador, cosa que és una gran victòria per a la privacitat.

Ja sigui que estigueu gestionant dades en un front-end web, escrivint un script de Python o consultant una base de dades, convertir el temps epoch és una habilitat fonamental. Explicarem els escenaris més comuns, des de transformar un enter epoch en una cadena llegible fins a fer tot el procés a la inversa.
Converting Timestamps in JavaScript
JavaScript's Date object és la vostra eina principal aquí, però té una peculiaritat important que fa ensofrar els desenvolupadors constantment: opera en mil·lisegons, sinó en mil·lisegons. Aquesta és una font clàssica d'errors quan el vostre frontend es comunica amb un backend que utilitza marques de temps estàndard de 10 dígits basades en segons.
Per convertir correctament una marca de temps Unix estàndard (en segons) en una Date object, you have to multiply it by 1000.
// A standard 10-digit Unix timestamp (in seconds)
const unixTimestamp = 1672531200;
// Convert to milliseconds, then create a Date object
const dateObject = new Date(unixTimestamp * 1000);
// Format into a readable UTC string
// Output: Sun, 01 Jan 2023 00:00:00 GMT
console.log(dateObject.toUTCString());
Need the current timestamp? Date.now() et dóna en mil·lisegons. Només recorda dividir per 1000 i arrodonir cap avall abans d'enviar una marca de temps de 10 dígits estàndard de tornada a una API.
Handling Conversions with Python
On the backend, Python's datetime El mòdul és una eina poderosa. És increïblement flexible i té un suport fantàstic per a les converses amb consciència de zona horària, cosa que el converteix en una opció fiable per als serveis que necessiten gestionar el temps amb precisió a diferents regions.
Aquí teniu la manera senzilla de convertir una marca de temps amb el datetime library:
import datetime
A standard 10-digit Unix timestamp
unix_timestamp = 1672531200
Converteix el timestamp en un objecte datetime
datetime_obj = datetime.datetime.fromtimestamp(unix_timestamp)
Formatau-lo en una cadena neta i llegible per a humans.
Output: 2023-01-01 00:00:00
print(datetime_obj.strftime('%Y-%m-%d %H:%M:%S'))
Aquesta senzilla aproximació us ofereix una manera clara i fiable de gestionar el temps d'època a les vostres aplicacions de Python. I si esteu treballant amb estructures de dades complexes com JSON que contenen marques de temps, potser us resultarà útil la nostra guia sobre l'ús d'un formatador JSON útil per a la depuració.
Database Conversions with SQL
Les bases de dades sovint emmagatzemen el temps com a marques de temps Unix perquè són eficients. La bona notícia és que la majoria de dialectes SQL tenen funcions integrades per gestionar aquestes conversions directament dins les vostres consultes. Això és molt més eficient que extreure marques de temps enters en brut i convertir-les en el codi de la vostra aplicació.
La marca de temps Unix és gairebé universal, utilitzada en més de 90% of programming languages—from JavaScript's Date.now() to Python's time.time()—alimentant bilions d'operacions diàries. És crucial encertar amb les zones horàries; un sòlid unix timestamp convertidor pot gestionar més de 400 Les zones IANA, que ajuden a prevenir errors en una estimació 62% aplicacions globals que no gestionen les zones horàries explícitament. Podeu trobar més detalls sobre l'adopció global d'aquestes eines a Fossa.
Pels desenvolupadors, poder formatejar SQL, convertir marques de temps i calcular diferències d'època sense haver de sortir mai de la vostra màquina és un gran guany de productivitat. Aquest enfocament local primer també us manté en compliment amb les normes modernes de privacitat de dades com GDPR i CCPA.
MySQL Example
In MySQL, the FROM_UNIXTIME() La funció és la que fareu servir més sovint. Preneu un enter epoch i el converteix de manera neta en un estàndard DATETIME format.
SELECT FROM_UNIXTIME(1672531200);
-- Returns: '2023-01-01 00:00:00'
Per anar a l'inrevés—d'una cadena de data de nou a una marca de temps d'època—simplement utilitza UNIX_TIMESTAMP().
SELECT UNIX_TIMESTAMP('2023-01-01 00:00:00');
-- Retorna: 1672531200
Exemple a PostgreSQL
PostgreSQL utilitza una funció lleugerament diferent però igual de potent: to_timestamp(). Aquesta funció converteix directament un timestamp Unix en un valor TIMESTAMP WITH TIME ZONE.
SELECT to_timestamp(1672531200);
-- Retorna: 2023-01-01 00:00:00+00
Com que és conscient de la zona horària des de sortida, és una elecció molt robusta per a aplicacions que serveixen una audiència global on la precisió horària és innegociable.
Dominant les Conversió de Timestamps al Terminal
Si sou habitual de la línia de comandes, canviar a un navegador o una interfície gràfica per a una conversió ràpida de timestamp és una autèntica estrebada del flux de treball. Simplement trenca la vostra concentració. La bona notícia és que no cal; tant Linux com macOS tenen eines natives i potents per gestionar aquestes conversió sense mai sortir del terminal.
L'eina de referència per a això és l'humil comandament date. És present pràcticament a tots els sistemes tipus Unix, però hi ha un problema: la sintaxi per utilitzar-lo com a conversor de timestamps unix és diferent entre Linux (GNU) i macOS (BSD). Conèixer la diferència és la clau per encertar-ho cada vegada.
Convertint Timestamps a Linux
A Linux, la sintaxi és neta i fàcil de recordar. Simplement utilitzeu l'opció -d per especificar la data, però heu d'indicar-li que esteu proporcionant un timestamp d'època prefixant-lo amb el símbol @.
Suposem que esteu revisant registres i us trobeu el timestamp 1704067200. Per veure què significa realment, executeu això:
date -d @1704067200
De manera instantània, obtindreu una data llegible per humans, alguna cosa com Mon Jan 1 00:00:00 UTC 2024. També podeu netejar aquesta sortida amb el vostre format personalitzat.
date -d @1704067200 +"%Y-%m-%d %H:%M:%S"
Sortida: 2024-01-01 00:00:00
Consell Pro: Aquest comandament es converteix en una eina de gran potència quan comenceu a canalitzar d'altres comandaments cap a ell. Podeu
grepun timestamp d'un fitxer de registre massiu i subministrar-lo directament adateper a una conversió instantània. Converteix una tasca de depuració multi-pas en una sola línia elegant.
Gestionant les Conversió a macOS
Ara, si executeu aquest mateix comandament de Linux en un Mac, llançarà un error. La versió BSD de date que utilitza macOS requereix l'opció -r en el seu lloc, i no necessita el prefix @.
Així és com convertiríeu el mateix timestamp en un Mac:
date -r 1704067200
De manera similar a la versió de Linux, podeu afegir opcions de format per obtenir la sortida exacta que desitgeu.
date -r 1704067200 +"%Y-%m-%d %T %Z"
Sortida: 2024-01-01 00:00:00 UTC
Aquesta petita diferència és un obstacle clàssic per a qualsevol que salte freqüentment entre Linux i macOS. Memoritzar ambdues versions us estalviarà molts maldecaps en el futur.
Un cop tingueu dominats aquests comandaments, podreu integrar les conversions de timestamp directament als vostres scripts de shell i anàlisi de registres. És una habilitat petita, però s'acumula en guanys significatius de productivitat, mantenint-vos en el flux i concentrats en la feina que importa.
Errors Comuns amb Timestamps i Com Evitar-los
Treballar amb timestamps Unix sembla senzill en superfície, però alguns errors clàssics poden portar a errors realment irritants. Aquests problemes tenen l'hàbit desagradable de aparèixer llunys del lloc on realment va ocórrer l'error, fent-los un maldecap real per depurar. Penseu en aquesta secció com la vostra guia de camp per detectar i evitar les trampes de timestamp més habituals que he vist al llarg dels anys.
La Confusió entre Segons i Mil·lisegons
Amb diferència, l'error més freqüent és confondre segons amb mil·lisegons. Un timestamp Unix estàndard és un enter de 10 dígits que representa el nombre de segons des de l'època. Però molts sistemes, especialment al món de JavaScript, treballen amb un timestamp de 13 dígits per a mil·lisegons. Quan una aplicació front-end passa un valor de mil·lisegons a un backend que espera segons, les coses es descontrolen.
Per a un Conversor de marques de temps Unix, aquell número de 13 dígitos sembla una data a milers d'anys en el futur. Això pot danyar silenciosament la validació de dades, la lògica de programació i qualsevol registre històric que intenteu mantenir. És el tipus de corrupció de dades subtil que potser ni tan sols noteu durant setmanes.
La Trampa de la Zona Horària
Un altre parany que atrapa fins i tot desenvolupadors experimentats és la gestió de zones horàries. Per definició, una marca de temps Unix sempre és en Temps Coordinat Universal (UTC). Representa un únic moment universal en el temps, completament independent de la ubicació. El parany es dispara quan oblideu això i assumiu que una marca de temps reflecteix l'hora local d'un usuari.
Aquest error sol passar quan convertiu una marca de temps a una data llegible sense especificar la zona horària. El vostre sistema sovint pren per defecte l'hora local del servidor, provocant caos. Un usuari a Nova York pot veure una hora destinada a algú a Londres, però està desfasada per diverses hores.
La regla d'or és simple: tracteu sempre les marques de temps com a UTC al vostre backend. Emmagatzemeu-les com a UTC, processeu-les com a UTC i convertiu-les a l'hora local d'un usuari només al frontend, just en el moment de la visualització.
Resolució d'Errors Comuns de Conversió de Marques de Temps
Quan les coses surten malament, els símptomes poden ser confusos. Aquí teniu una taula de referència ràpida que he elaborat a partir de l'experiència per ajudar-vos a diagnosticar i corregir els problemes més comuns sobre la marxa.
| Símptoma | Causa Probable | Solució |
|---|---|---|
| La data és a l'any 52361 o alguna altre any llunyà del futur. | Mil·lisegons vs. Segons. Esteu passant una marca de temps de 13 dígitos en mil·lisegons a una funció que esperava una marca de temps de 10 dígitos en segons. | Dividiu la marca de temps per 1000 abans de processar-la. Valideu sempre el nombre de dígitos de les marques de temps entrants. |
| L'hora està desfasada per algunes hores, però la data és correcta. | Maltractament de la Zona Horària. La marca de temps es va convertir utilitzant l'hora local del servidor en lloc de la de l'usuari o de l'UTC. | Assegureu-vos que totes les converses especifiquin explícitament la zona horària de destinació. Convertiu a l'hora local només al costat del client. |
| La data està fixada a l'1 de gener de 1970. | Marca de Temps Invàlida o Nul·la. El valor de la marca de temps és probablement 0, null, o undefined. |
Afegiu una comprova per assegurar-vos que la marca de temps és un enter positiu vàlid abans d'intentar la conversió. Proporcioneu un valor alternatiu. |
Rebeu "Data Invàlida" o un error NaN. |
Tipus de Dada Incorrecte. La marca de temps s'està tractant com una cadena o un altre tipus no numèric quan es requereix un número. | Parsegeu explícitament la marca de temps a un enter (parseInt() a JS, int() a Python) abans d'utilitzar-la en funcions de data. |
Recordeu, una comprova ràpida a l'entrada us pot estalviar hores de depuració més endavant.
Evitant Ambigüitat amb Estàndards de Format
Dependre de marques de temps d'enter cru en passar dades entre sistemes pot ser una recepta per a la confusió. Per això, estandarditzar en un format de cadena universal com ISO 8601 (2022-05-17T12:00:00Z) és una mesura defensiva tan excel·lent. Convertir les marques de temps Unix (p. ex., 1652905200) a un format clar i autoexplicatiu com aquest ajuda a prevenir errors en un 37% estimat de trucades d'API entre zones horàries.
Tenint en compte que 72% de les empreses Fortune 500 utilitzen marques de temps Unix per a l'anàlisi de registres, on un sol error pot costar més de $10,000 per hora d'inactivitat, la precisió és tot. Podeu llegir més sobre com s'utilitza el temps epoch en diferents indústries a EpochConverter.
Per a aquells que gestionen bases de dades, un tractament consistent de les marques de temps és igualment crucial. Si us trobeu sovint lluitant amb diferents formats de marques de temps a la vostra base de dades, la nostra guia sobre l'ús d'un potent formatador SQL pot ajudar-vos a mantenir les vostres consultes netes i previsibles.
Aquest arbre de decisions us ajuda a triar l'ordre adequat per al vostre sistema operatiu, evitant errors de sintaxi quan necessiteu una conversió ràpida.

El diagrama de flux de dalt mostra clarament la diferència de sintaxi crucial entre l'ordre date a Linux (-d @...) i macOS (-r ...)—un error comú per als desenvolupadors que treballen en diferents entorns.
Per fer el vostre codi a prova de falles, implementeu sempre comprovacions per validar la longitud d'una marca de temps entrant. Una funció senzilla que verifiqui si el valor té 10 dígits (segons) o 13 dígits (mil·lisegons) pot atrapar aquests errors abans que enverinin la lògica de la vostra aplicació.'
Preguntes freqüents sobre les marques de temps Unix
Un cop us familiaritzeu amb les marques de temps Unix, poques preguntes pràctiques apareixen gairebé sempre. He vist com això fa trontollar desenvolupadors de tots els nivells, així que aclarim les més comuns que trobareu en el vostre treball diari.
Per què tantes API utilitzen marques de temps en lloc de cadenes ISO 8601?
Realment es redueix a l'eficiència pura. Una marca de temps Unix és simplement un sol número, cosa que la fa increïblement compacta en comparació amb una cadena com '2023-10-27T10:00:00Z'. Aquesta mida més petita implica menys dades per enviar per la xarxa, cosa que estalvia amplada de banda i pot accelerar les respostes de les API.
També són completament agnòstiques del llenguatge. No hi ha ambigüitat, no hi ha particularitats de processament i no cal preocupar-se per formatacions regionals. Per a una màquina, processar números sempre és més ràpid que analitzar cadenes, de manera que qualsevol càlcul de dates—com determinar el temps entre dos esdeveniments—té un cost computacional més baix. Per a sistemes d'alt rendiment, aquesta simplicitat és una gran avantatge.
Quina és la manera correcta de gestionar les zones horàries?
Aquesta és la gran pregunta. Aquí teniu la regla d'or: Una marca de temps Unix és sempre, sempre en UTC. No té cap concepte de zona horària integrat. És simplement un recompte brut de segons des de l'època.
Les zones horàries només importen quan necessiteu mostrar aquesta marca de temps a un humà.
El meu consell? Manteniu UTC per a tot al backend. Emmagatzemeu-la a la vostra base de dades com una marca de temps UTC, passeu-la per les vostres API en UTC i feu tota la vostra lògica del costat del servidor en UTC. L'única vegada que hauríeu de convertir-la a una zona horària local és al frontend, just abans de mostrar-la a l'usuari. Aquesta única pràctica us estalviarà un univers sencer de errors de zones horàries i d'estalvi de llum.
Encara hauria de preocupar-me pel problema de l'any 2038?
Per a la majoria de projectes nous, probablement no. El "Problema de l'any 2038" és un recordatori de sistemes més antics que utilitzaven un enter signat de 32 bits per emmagatzemar la marca de temps. Quan aquest número es fa massa gran, torna a començar i es converteix en negatiu, enviant les dates de tornada a 1901.
Afortunadament, gairebé tots els sistemes moderns—des de sistemes operatius fins a bases de dades—fa temps que han passat a enters de 64 bits. Això ajorna el problema tant (mil milers d'anys, de fet) que ja no és una preocupació pràctica per a nosaltres.
Tot i això, si esteu mantenint un sistema heretat o treballant amb maquinari incrustat (penseu en dispositius IoT), definitivament és alguna cosa que heu de tenir en compte. Sempre cal saber sobre quina arquitectura esteu construint.
Com puc convertir ràpidament una marca de temps a Excel o Google Sheets?
No necessiteu treure les dades a un convertidor de marques de temps Unix separat per fer-ho. Una fórmula senzilla farà la feina. Suposant que la vostra marca de temps és a la cel·la A1:
- Per a marques de temps en segons (10 dígits):
=A1 / 86400 + DATE(1970,1,1) - Per a marques de temps en mil·lisegons (13 dígits):
=A1 / 86400000 + DATE(1970,1,1)
Simplement inseriu aquesta fórmula i, a continuació, formateu la cel·la com "Data" o "Data i hora". És un salvavides quan esteu analitzant exportacions de dades ràpidament i no voleu interrompre el vostre flux.
Cansat de canviar constantment entre el vostre editor, la línia de comandes i una dotzena de pestanyes del navegador per a tasques simples? La suite ShiftShift Extensions integra un potent convertidor de marques de temps Unix, un formatejador JSON, un embellidor de SQL i molt més directament al vostre navegador. Tot el que necessiteu és a una drecera de teclat.