He estado monitoreando los datos del subprograma de respuesta del edificio de fiestas que desarrollé estos días y encontré un problema, es decir, los datos del tiempo de respuesta del usuario son algo inexactos.
Como se muestra en la figura siguiente, el usuario número uno, con 20 preguntas, incluso si no tiene cerebro para responder las preguntas, no lo completará en 5 segundos.
Lógica actual
Calcule el tiempo transcurrido mediante la cuenta regresiva. En este momento, si la cuenta regresiva ya no se calcula debido a presionar Inicio para regresar, los datos de tiempo transcurrido serán menores
Lógica de optimización
Grabe dos marcas de tiempo,
1. Marca de hora de inicio
2. La marca de tiempo final de la respuesta
Los datos de tiempo transcurrido se calculan mediante estas dos marcas de tiempo. En este caso, los datos de tiempo transcurrido de la respuesta del usuario se pueden obtener con precisión
API sobre la fecha de la marca de tiempo
var timestamp = Date.parse (nueva fecha ()); timestamp = timestamp / 1000;
Lógica específica
Si los dos objetos de fecha son del tipo Fecha, puede restarlos directamente y obtendrá la diferencia en milisegundos.
Después de obtener la diferencia de milisegundos entre las dos fechas, se puede convertir a un formato de fecha específico (año xxxx, mes xx, día xx, hora xx, minuto xx, xx segundo)
Porque lo que obtenemos son milisegundos, todo lo que tenemos que convertir a segundos primero. 1 segundo = 1000 milisegundos
var new_date = new Date (); // Crea un nuevo objeto de fecha, la hora actual predeterminada var old_date = new Date ("2018-12-12 00:00:00"); // Establece un punto en el pasado, "yyyy -MM-dd HH: mm: ss "fecha formateada var difftime = (new_date-old_date) / 1000; // Calcula la diferencia de tiempo y convierte milisegundos a segundos var days = parseInt (difftime / 86400); // días 24 * 60 * 60 * 1000 var horas = parseInt (difftime / 3600) -24 * días; // hora 60 * 60 total de horas-últimas horas = horas actuales var minutos = parseInt (difftime% 3600/60); // Minuto- (día * 24) Toma 60 segundos como un todo y toma los segundos restantes y los segundos / 60 es el número de minutos var segundos = parseInt (difftime% 60); // Toma 60 segundos como un todo y toma los segundos restantes Alerta numérica ("La diferencia horaria es:" + días + "días," + horas + "horas," + minutos + "minutos," + segundos + "segundos");
otro
Es importante señalar que la fecha debe calcularse obteniendo la hora del servidor a través de la función de nube, no la hora del cliente.