Tech Help

Unix Timestamp en segons vs mil·lisegons: per què la data mostra 1970

Si un Unix timestamp esdevé una data cap al 1970, sovint són segons llegits com a mil·lisegons. Com distingir les unitats.

Resposta ràpida

Si un Unix timestamp dona una data cap al 1970, el valor se sol interpretar en la unitat equivocada.

Els Unix timestamp solen usar segons, mentre que Date en JavaScript sol usar mil·lisegons.

Un timestamp modern de 10 xifres sol ser en segons; un de 13, en mil·lisegons. Si les unitats no coincideixen, pot caldre multiplicar o dividir per 1.000.

Has convertit un timestamp i has caigut al gener de 1970. Gairebé mai és un rellotge espatllat. El nombre s’ha llegit com a mil·lisegons quan era en segons—o a l’inrevés.

Què és un Unix timestamp?

Un Unix timestamp mesura el temps des de l’Unix epoch: 1970-01-01 00:00:00 UTC. Sol usar segons enters. El mateix instant es pot guardar també en mil·lisegons (segons × 1.000). El nombre no indica la unitat.

Segons vs mil·lisegons: la diferència ×1.000

Un segon són 1.000 mil·lisegons. Compara 1720000000 amb 1720000000000. Si el primer és en segons i el segon en mil·lisegons, marquen el mateix instant. Llegeix el primer com a mil·lisegons i la data salta cap al 1970.

Aquests resultats UTC s’han calculat amb els nombres de dalt, no s’han endevinat.

Valor Unitat probable Interpretació (UTC)
1720000000 Segons Data moderna llegida com a segons: 2024-07-03 09:46:40 UTC
1720000000000 Mil·lisegons El mateix instant llegit com a mil·lisegons: 2024-07-03 09:46:40 UTC
1720000000 com a mil·lisegons Unitat incorrecta Data cap al 1970: 1970-01-20 21:46:40 UTC

Per què el meu timestamp mostra 1970?

Si un valor en segons es tracta com a mil·lisegons, el nombre és 1.000 vegades més petit del compte. JavaScript només compta un tram curt després de l’Unix epoch, i la data queda al 1970:

const seconds = 1720000000;

new Date(seconds);
// 1970-01-20 21:46:40 UTC

new Date(seconds * 1000);
// 2024-07-03 09:46:40 UTC

Aquesta data de 1970 és l’epoch més un parell de setmanes. Multiplica els segons per 1.000 abans de passar-los a Date.

  • SEGONS
  • 1720000000
  • MIL·LISEGONS
  • 1720000000000
El mateix instant: segons × 1.000 = mil·lisegons.
  • Valor en segons
  • Tractat per error com a mil·lisegons
  • Data cap al 1970
Un valor en segons llegit com a mil·lisegons cau a prop de l’Unix epoch.
Segons o mil·lisegons?

Si el resultat és cap al 1970, comprova la unitat del timestamp abans d’investigar el fus horari.

10 xifres són segons i 13 mil·lisegons?

En dates actuals, 10 xifres solen ser segons i 13 mil·lisegons. És una pista ràpida, no una regla de validació. El nombre de xifres canvia amb l’interval temporal, i algunes API desen microsegons o nanosegons. Confirma la unitat amb la documentació o una data que tingui sentit.

Per què passa tant en JavaScript

En JavaScript, un Date numèric són mil·lisegons des de l’epoch. Molts backends, bases de dades i eines Unix encara desen segons. Passar un valor en segons directe a Date és un error freqüent:

const unixSeconds = 1720000000;

const wrong = new Date(unixSeconds);
const correct = new Date(unixSeconds * 1000);

wrong queda cap al 1970 (1970-01-20 21:46:40 UTC). correct és l’instant modern (2024-07-03 09:46:40 UTC).

Altres sistemes usen unitats diferents

Altres llenguatges, API i bases poden usar segons o mil·lisegons. Alguns desen microsegons o nanosegons. No assumeixis que un llenguatge usa sempre una unitat: mira la documentació. Si el nombre és en JSON, Formatar i comparar JSON fa llegible el camp; tampoc no et dirà la unitat.

Com sé quina unitat usa el meu timestamp?

Fes aquestes comprovacions en ordre. El nombre de xifres no n’hi ha prou.

  1. Consulta la documentació de l’API o de la base de dades.
  2. Mira el nombre aproximat de xifres.
  3. Compara el valor amb un timestamp modern plausible.
  4. Prova el valor com a segons i com a mil·lisegons.
  5. Comprova si la data resultant té sentit.

Si una interpretació cau al 1970 i l’altra en una data que reconeixes, la causa és el desajust d’unitats.

Errors habituals amb Unix timestamp

  • Segons interpretats com a mil·lisegons. La data s’enfonsa cap al 1970, com a l’exemple de dalt.
  • Mil·lisegons interpretats com a segons. La data salta al futur llunyà, o la conversió falla.
  • Multiplicar per 1.000 dues vegades. Un valor que ja era mil·lisegons es fa enorme i la data avança segles.
  • Dividir per 1.000 dues vegades. Un valor en segons s’encongeix una altra vegada, altre cop cap al 1970.
  • Culpar el fus horari. Un fus pot moure hores o el dia del calendari. No porta un timestamp modern al 1970.
  • Tractar una data formatada com a Unix timestamp. Un valor com 2024-07-03T09:46:40Z no és un nombre epoch. Analitza’l com a data, no com a segons.

El fus horari causa el problema del 1970?

Normalment, no. Un fus pot canviar el rellotge mostrat i, a prop de mitjanit, la data del calendari. No converteix un Unix timestamp modern en 1970. Si el resultat és 1970, mira primer segons davant mil·lisegons.

Convertir i comprovar un Unix timestamp

NEXNARA Convertidor de data i hora pot convertir un Unix timestamp al navegador.

Enganxa segons o mil·lisegons Unix, usa el timestamp actual, mira UTC i l’hora local, converteix fusos i formata una data. La detecció automàtica sol tractar 10 xifres com a segons i 13 com a mil·lisegons; encara pots triar la unitat.

La conversió es fa al teu navegador. Aquesta eina no envia dates ni timestamps a un servidor de NEXNARA. Els anuncis i altres funcions del lloc sí que usen la xarxa; això és a part de la conversió.

Vols comprovar un Unix timestamp? Obre Convertidor de data i hora i compara segons amb mil·lisegons.

FAQ

Per què el meu Unix timestamp mostra 1970?

Sovint són segons llegits com a mil·lisegons. JavaScript tracta un nombre molt menor, així que la data cau poc després de 1970-01-01 00:00:00 UTC. Multiplica els segons per 1.000 i torna a convertir.

Els Unix timestamp són segons o mil·lisegons?

Sovint usen segons. Moltes API web i Date en JavaScript usen mil·lisegons. Mira sempre què documenta aquell sistema. Alguns usen microsegons o nanosegons.

Com converteixo segons a mil·lisegons?

Multiplica per 1.000. 1720000000 segons són 1720000000000 mil·lisegons. A l’inrevés, divideix per 1.000.

Per què Date en JavaScript usa mil·lisegons?

El timestamp numèric de Date en JavaScript es defineix com a mil·lisegons des de l’Unix epoch. Per això new Date(unixSeconds) és incorrecte si unixSeconds són segons Unix.

Un timestamp de 10 xifres és sempre en segons?

No. En dates actuals sol ser-ho, i 13 xifres solen ser mil·lisegons. El recompte de xifres és una pista, no una regla. Confirma-ho amb la documentació o una data coherent.

Un Unix timestamp inclou fus horari?

No. Un Unix timestamp és un instant comptat des de 1970-01-01 00:00:00 UTC. Els fusos afecten com es mostra, no el nombre.