Chrono Mock
IdiomaEspañol

Ejecuta una app en otra zona horaria

El informe que cae en el día equivocado, el recordatorio que salta una hora antes, la marca de tiempo que se lee como mañana - casi todo esto solo aparece en una zona en la que no estás sentado. Esto da a un proceso su propio desfase, mientras tu zona del sistema sigue exactamente donde estaba.

Por qué no ayudan las respuestas habituales

  • Cambiar la zona horaria de Windows la cambia para todo - tu calendario, tus registros, tus reuniones - y en un equipo administrado puede que no te corresponda cambiarla.
  • Definir TZ funciona con algunos entornos de ejecución y con otros no. Una aplicación nativa de Windows que lea GetTimeZoneInformation no lo notará en absoluto.
  • Las herramientas de desarrollo del navegador sobrescriben la zona de una página web, lo cual es excelente e irrelevante para una aplicación de escritorio.

Un proceso, un desfase

La sesión lleva su propio desfase. La aplicación pregunta a Windows en qué zona está y recibe esa respuesta, mientras que todos los demás programas del equipo reciben la real.

# El mismo momento, visto desde la costa oeste de Estados Unidos
chrono run "C:\apps\test.exe" --at 2027-01-15T09:00:00 --zone -08:00

# Solo la zona - la fecha real de hoy, el reloj de otra persona
chrono run "C:\apps\test.exe" --zone +09:00

La calculadora responde a la otra mitad de la pregunta - qué marca realmente un momento dado en otro lugar. Convertir conserva el instante y cambia solo el reloj de pared, que es exactamente como una fecha cae en el día equivocado:

$ chrono calc --base 2027-01-15T09:00:00 --zone +01:00 --to-zone -08:00
Chrono Mock - date calculator
  base:    2027-01-15T09:00:00
  step 1:  zone -08:00  -> 2027-01-15T00:00:00
  result:  2027-01-15T00:00:00
  formats:
    ISO date      2027-01-15
    ISO datetime  2027-01-15T00:00:00-08:00
    US            01/15/2027
    PL            15.01.2027

Las nueve de la mañana en Europa central son la medianoche en la costa oeste de Estados Unidos. El mismo instante, y un informe diario que agrupa por fecha local lo coloca en un día distinto según dónde se ejecute.

Límites honestos, y aquí importan

La zona de la sesión es un desfase fijo sin horario de verano.

Una sesión configurada en +01:00 se queda en +01:00 tanto si su reloj marca enero como julio. Una ejecución que cruce una transición real se desvía por tanto una hora de lo que esa zona mostraría de verdad, y hacer pasar a una aplicación por un cambio de horario de verano es algo que esta herramienta todavía no hace. La calculadora de fechas lo dice en lugar de adivinar.

  • La zona se presenta como «Chrono Session», un nombre que ningún registro de Windows conoce. Todo lo que relacione ese nombre con una zona - entre ello TimeZoneInfo.Local de .NET - recurre en su lugar al desfase, que es la respuesta correcta. Una aplicación que insista en un nombre del registro no encontrará ninguno.
  • Java toma la zona de la sesión como un desfase. La zona de la sesión no tiene horario de verano ni ciudad detrás, así que Java la nombra por su desfase - GMT+05:30 para una sesión en +05:30.
  • En el modo Chromium y Electron, las páginas también leen la zona de la sesión. Es el mismo desfase fijo: cada página y cada worker se coloca en él y comprueba lo que lee. El proceso principal de una aplicación Electron ejecuta JavaScript en Node, al que la sesión no llega, así que conserva el reloj real.
  • Los desfases van de -14:00 a +14:00 en minutos enteros. Todo lo que quede fuera se rechaza en lugar de envolverse en silencio.

Cuál de estos casos se aplica a tu aplicación es algo que se mide, no que se adivina. La sesión informa de su propia cobertura →

Pruébalo