Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

143
Vistas
Valor de encabezado de marca de tiempo diferente cuando se solicita servicio después de las 8 p. m.

Tengo un problema extraño aquí, necesito enviar la hora actual en milisegundos desde Android para autorizar a todos los usuarios cuando intenten solicitar una API. Mi problema es que, cuando trato de comparar la solicitud de encabezado y el servidor de tiempo, tiene algo diferente, aproximadamente 12 horas, y sucede después de las 8 p.m. todos los días. Cuando intento llamar a la API a la mañana siguiente, el encabezado envía la marca de tiempo correcta con la hora del servidor.

Resultado después de las 8 p.m.

 Time Request Header : 1639618812 Server Time : 1639662014 Max 5 Minutes : 1639662314 Min 5 Minutes : 1639661714

Este es el resultado que probé recientemente

 Time Request Header : 1639704110 Server Time : 1639704111 Max 5 Minutes : 1639704411 Min 5 Minutes : 1639703811

Así es como generé la marca de tiempo con flutter

 static String createXTimestamp() { DateTime test = DateTime.parse("1970-01-01 00:00:00"); String now = DateFormat('yyyy-MM-dd hh:mm:ss').format(DateTime.now().toUtc()); var tStamp = DateTime.parse(now).millisecondsSinceEpoch - test.millisecondsSinceEpoch; return tStamp.toString().substring(0,10); }

Así es como se procesó en NodeJs

 const dateNow = Math.floor(new Date().getTime() / 1000); var max5 = dateNow + 300; var min5 = dateNow - 300; var time = req.headers.time; if(time >= min5 && time <= max5) //always return false else res.json({error_code: 401, message: "Unauthorized User"});

Esto realmente me confunde, así que realmente necesito ayuda aquí. Gracias.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Esto suena como un error de zona horaria. No creo que createXTimestamp esté haciendo lo correcto. Hay algunos errores de zona horaria allí, donde la precisión de la zona horaria se pierde y se reemplaza con la zona horaria local.

Además, dice "milisegundos desde la época": el .substring(0,10) está eliminando los milisegundos, y en el lado del nodo se divide por 1000 para obtener segundos también.

Si el objetivo es devolver segundos desde la época, no creo que necesite la variable de test en absoluto, y puede reemplazar toda esa función con lo siguiente:

 static String createXTimestamp() { return DateTime.now().toUtc().millisecondsSinceEpoch.toString().substring(0, 10); }
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda