Español

Herramientas de desarrollo · Convertidor de marca de tiempo Unix

Cómo el navegador convierte una época a hora local con Fecha e Internacional

· Cómo funciona

marcas de tiempo javascript APIS del navegador

Una época que ingresa a un navegador y emerge como UTC y lecturas del reloj local
Ilustración de vector original de ToolAcre

Un convertidor de navegador no tiene reloj de servidor ni base de datos de zona horaria propia; se basa en el objeto Date y la API internacional respaldada por su sistema operativo. Esta publicación explica ese oleoducto y sus límites.

¿De dónde obtiene el navegador lo "local"? — la misma época mostrada de forma diferente en una computadora portátil y un teléfono en la misma habitación

Dos dispositivos uno al lado del otro pueden representar una época de manera diferente cuando sus zonas locales configuradas difieren. El número entero no cambia entre la computadora portátil y el teléfono; cada navegador construye el mismo instante y luego proporciona campos de calendario local para su propio entorno. Por lo tanto, “local” describe al lector, no una propiedad contenida dentro de la época.

ToolAcre hace visible esa dependencia etiquetando la fila local con `Intl.DateTimeFormat().resolvedOptions().timeZone`. Una captura de pantalla que indica una hora y un registro del servidor que indica otra pueden ser lecturas fieles. Primero compare sus filas UTC; La coincidencia de resultados UTC muestra que la presentación, más que el instante subyacente, difiere.

La fecha toma milisegundos: el contrato del constructor, por qué los segundos deben multiplicarse por mil y el rango que la fecha puede representar

JavaScript `Date` recibe milisegundos de la época. `fromEpoch` de ToolAcre multiplica una entrada de segundos por 1,000 y deja una entrada de milisegundos sin cambios antes de construir el objeto. Esa conversión es explícita porque pasar 1,717,243,200 directamente a `new Date` significaría unos veinte días después de 1970, no junio de 2024.

La implementación rechaza un número no finito y cualquier valor interpretado más allá de ±8.64×10¹⁵ milisegundos antes de formatear. Ese límite proviene del rango de fechas nombrado en la fuente, no de una base de datos o del reloj del sistema operativo. Cambiar el selector puede mover un valor a través del límite, por lo que un error también le indica qué unidad se aplicó.

Accesores UTC versus accesores locales: getUTCHours y getHours, y cómo el motor aplica el desplazamiento

ToolAcre no extrae campos con `getUTCHours` y `getHours`; La redacción del descriptor de acceso del esquema es más específica que la implementación. Le pide a `Intl.DateTimeFormat` que formatee la fecha una vez con `timeZone: "UTC"` y una vez sin anulación de zona. Ambas llamadas reciben el mismo valor de milisegundos, por lo que ninguna puede mover el evento en sí.

Esa distinción es importante al depurar. Si las filas de segundos y milisegundos concuerdan con el productor pero la etiqueta local lo sorprende, inspeccione la zona del navegador en lugar de agregar horas a la época. La aritmética de compensación manual crearía un instante diferente y luego permitiría que el formateador aplicara reglas locales nuevamente, produciendo el clásico error de doble ajuste.

UTC y el formato local solicitan al motor dos lecturas de una fecha

El convertidor puede demostrar que solicita al navegador `resolvedOptions().timeZone`; no puede probar si un motor en particular obtuvo todas las reglas de zona horaria del sistema operativo, datos agrupados u otra capa de plataforma. La fuente trata deliberadamente esa maquinaria como responsabilidad del motor y recurre a la frase "hora local" si falla la consulta de zona.

Este límite de evidencia es útil. Una zona con nombre en el resultado identifica la elección actual del navegador, pero no es un informe de versión para una base de datos de zona horaria. Si dos entornos no coinciden en una fecha anterior, registre el navegador, el sistema operativo y la zona mostrada. El convertidor suministra la observación; no diagnostica el paquete de datos detrás de Intl.

El navegador informa una zona local, mientras que el origen de su regla sigue siendo un detalle de implementación.

Para la fila ISO, `toISOString()` proporciona una cadena UTC con una Z final y tres dígitos fraccionarios. Las filas UTC y locales legibles por humanos utilizan un formateador inglés de Gran Bretaña con año numérico, mes abreviado, día de dos dígitos y un reloj de 24 horas. El formateador también solicita `shortOffset`, haciendo que el desplazamiento aplicable forme parte de cada fila representada.

Esas opciones explican por qué copiar `Date.toString()` desde una consola no es evidencia equivalente. Su prosa exacta depende de la configuración regional y está fuera del contrato de salida de esta herramienta. ToolAcre corrige sus opciones de visualización, al tiempo que permite que varíe la zona local real. Copie el valor ISO cuando otro sistema necesite una comparación estable legible por máquina.

Ejemplo resuelto: una época, tres salidas: una cadena ISO UTC, una hora con formato local y el desplazamiento en minutos desde getTimezoneOffset

Ingrese 1,717,243,200 y elija segundos. La multiplicación produce 1,717,243,200,000 milisegundos, que las pruebas establecen como `2024-06-01T12:00:00.000Z`. La fila UTC formatea ese instante en UTC; la fila local formatea la fecha idéntica en la zona del navegador y nombra esa zona. Las filas de segundos y milisegundos conservan ambas formas numéricas.

El reloj local preciso y la compensación se deben leer desde el dispositivo que ejecuta el ejemplo; publicar uno aquí pretendería que todos los lectores tienen la misma zona. Es por eso que esta verificación realizada utiliza la afirmación ISO como resultado fijo y trata la salida local como un valor observado. Si ISO difiere, vuelva a visitar la unidad seleccionada antes de investigar la configuración de ubicación.

Ejemplo resuelto: una época, las tres salidas que ToolAcre realmente expone

Esta ruta no ofrece un selector para una tercera zona arbitraria. `formatInZone` puede aceptar una zona internamente, pero el panel la llama para UTC y solo para el navegador predeterminado. Un artículo que afirma que los usuarios pueden elegir Tokio, Nairobi o Toronto describiría una interfaz que no se incluye, aunque Intl puede admitir dicho formato en otros lugares.

Tampoco expone la selección de calendario, la selección de configuración regional o una revisión de la base de datos de zona horaria. Para la conversión entre oficinas, mantenga la época como ancla y utilice una herramienta cuya interfaz documentada nombre la zona de destino. Aquí la promesa más limitada es valiosa: UTC universal junto al entorno local, sin que ningún servidor oculto decida lo que significa local.

Conclusión: su navegador es el reloj y el atlas, y cómo el conversor de marcas de tiempo de Unix los usa para mostrar UTC y local uno al lado del otro sin un servidor

El navegador actúa como motor aritmético y entorno de presentación. ToolAcre resuelve la unidad, crea una fecha, solicita un valor ISO canónico y luego formatea las lecturas UTC y locales una al lado de la otra. No se necesita ningún servicio de conversión remota para esos pasos y la unidad mostrada mantiene la decisión del factor de 1,000 disponible para su revisión.

Cuando las salidas no coinciden entre los dispositivos, compare la fila ISO, la nota de la unidad y la zona local nombrada en ese orden. Esas tres observaciones separan instante, escala y presentación. Tratar el reloj local como la fuente de la verdad reduce las tres preguntas en una y hace que una conversión correcta parezca incorrecta cada vez que el espectador cambia de zona.