Cómo calcular tiempos de espera de un bus eficientemente

  • Autor Autor ramonjosegn
  • Fecha de inicio Fecha de inicio
ramonjosegn

ramonjosegn

Sigma
Verificación en dos pasos activada
Verificado por Whatsapp
Hola chicos/as.

Tengo un archivo donde he podido obtener (gracias a la ayuda inestimable del compañero [MENTION=46140]tvlinks[/MENTION] - os recomiendo altamente sus servicios) un listado de horarios de paso de un bus.

Algo así

Paradero 1 - 12:10
Paradero 2 - 12:20
Paradero 3 - 12:30
Paradero 4 - 12:50
etc

Pero ahora me gustaría llevarlo a tiempos de espera reales.

Es decir, que dependiendo de la hora del día se pueda saber CUÁNTO ES EL TIEMPO DE ESPERA

O sea que la tabla tendría que ser algo así

Paradero 1 - Llega en 10 minutos
Paradero 2 - Llega en 20 minutos
Paradero 3 - Llega en 30 minutos
Paradero 4 - Llega en 40 minutos
etc

por supuesto teniendo en cuenta la hora real del día...

Y quiero llevarlo a wordpress (aunque eso ya será otra historia).

Realmente no sé cómo plantear esta idea, por ahí un desarrollador me dijo que tenía que tener en cuenta LA MEDIANOCHE pero ni entendí para qué...

¿Alguna idea de cómo hacerlo?

Gracias.
 
Debes tener como base el numero de paradas (paradas = 4) la hora inicial desde que sale el BUS (horaInicial = 12:00)
el tiempo se calcula de parada en parada (tiempo = ?) sucesivamente.

para llevar esto al plano de programación se puede crear un loop infinito que al presionar stop tome el tiempo transcurrido y al llegar a la ultima parada calcular el tiempo de todo el procedimiento.

De este modo lo pienso yo y ojo que no soy muy bueno al redactar espero se entienda.

Saludos!
 
Hola [MENTION=127525]jsstoni[/MENTION]

Esa parte ya la tengo resuelta (con mucha ayuda, 2 meses de trabajo y dolor de cabeza - de hecho ayer revisé y ya no me acuerdo de nada jajaja).

Lo que necesito es saber cómo hago el cálculo para obtener "pasa en X minutos" en lugar de "pasa a las 12:20".

Un programador me dijo que tenía que restar las 12 de la noche... pero ahí me dejó aún más frito...
 
voy a tomar ese ejemplo para tratar de resolverlo y ayudarte a saber cual es el tiempo si lo logro. me pusiste a pensar :encouragement:
 
voy a tomar ese ejemplo para tratar de resolverlo y ayudarte a saber cual es el tiempo si lo logro. me pusiste a pensar :encouragement:

La mayoría de aplicaciones de buses lo manejan así... no me preguntes cómo lo hacen...

Quizás en google se consigan algunos ejemplos...

Dudo que sea tomando la medianoche como me comentó el desarrollador del plugin... pero quién sabe...

Yo ni siquiera sé por dónde comenzar a pensar...

O sea ni sé cómo hacer el planteamiento...
 
Un programador me dijo que tenía que restar las 12 de la noche... pero ahí me dejó aún más frito...
No quiero imaginar que clase de programador es...
Al grano para obtener el tiempo solo restas las 2 horas mejor un ejemplo en php

Insertar CODE, HTML o PHP:
<?php
$paradaInicial = strtotime("12:00");
$tiempoTranscurrido = strtotime("12:13");
$calcularTiempo = ($tiempoTranscurrido - $paradaInicial);
echo gmdate("H:i", $calcularTiempo);
?>
 
Al grano para obtener el tiempo solo restas las 2 horas mejor un ejemplo en php

Insertar CODE, HTML o PHP:
<?php
$paradaInicial = strtotime("12:00");
$tiempoTranscurrido = strtotime("12:13");
$calcularTiempo = ($tiempoTranscurrido - $paradaInicial);
echo gmdate("H:i", $calcularTiempo);
?>

No soy programador.

¿A qué te refieres con 2 horas o fue un error?

Lo que necesito es la idea de qué debo hacer -qué debo sumar, restar, multiplicar o lo que deba hacer - la idea lógica detrás

(no entendí el código igual se agradece).

Si pudieras poner un ejemplo te lo agradecería.

O sea estoy en la parada de bus a las 4.00 pm por ejemplo.

Mi base de datos dice que el próximo bus más cercano a las 4.00 pm pasa a las 4.20 (suposición).

¿Cómo calculo para saber cuál es la hora más cercana a las 4 pm y cómo lo muestro en formato "faltan 20 minutos"? ¿De dónde obtengo ese dato?
 
Última edición:
No soy programador.

¿A qué te refieres con 2 horas o fue un error?

Lo que necesito es la idea de qué debo hacer -qué debo sumar, restar, multiplicar o lo que deba hacer - la idea lógica detrás

(no entendí el código igual se agradece).

Si pudieras poner un ejemplo te lo agradecería.

O sea estoy en la parada de bus a las 4.00 pm por ejemplo.

Mi base de datos dice que el próximo bus más cercano a las 4.00 pm pasa a las 4.20 (suposición).

¿Cómo calculo para saber cuál es la hora más cercana a las 4 pm y cómo lo muestro en formato "faltan 20 minutos"? ¿De dónde obtengo ese dato?


Hola, te doy un ejemplo

Hora actual -> 12:23

Paradero 1 - 12:10
Paradero 2 - 12:20
Paradero 3 - 12:30
Paradero 4 - 12:50

Es necesario comparar tu hora actual con el listado de horas que tengas para saber si es mayor o menor, en este ejemplo el mas cercano es paradero Paradero 3

Una vez que sepas aparir de que hora es menor tu hora actual solo es restar las 2 horas.

Saludos.
 
En castellano sencillo resta la hora que esperas que pase el bus con la hora actual y así sabes cuántos minutos faltan , serían unos condicionales if la hora actual mayor y menor a las horas predeterminadas restar con la hora siguiente a la que pasa el bus y muestra esto te lo digo así porque que te pasaron un código y no lo entendiste. Así que supongo no quieres más códigos.
 
Pero lo quieres hacer para que se actualice en tiempo real o solo lo quieres dar como estimado para tener tiempos estáticos?
 
Pero lo quieres hacer para que se actualice en tiempo real o solo lo quieres dar como estimado para tener tiempos estáticos?

No hay forma de conseguir tiempos reales, está prohibido por temas de seguridad o alguna paranoia así que tienen acá con el transporte (como sea, está prohibido tener ese dato).

Conseguí armar un listado de horas de paso que toca alimentar de forma estadística pero muestra las horas de paso, nada real, aunque haciendo ensayos tiene un margen de error entre 2 y 20 minutos (incluso en malas condiciones puede tener márgenes de error de 2 horas).

O sea tengo un excel que a base de alimentarlo me saca las horas así

parada 1 - 12:20
parada 2 - 12:30
parada 3 - 12:40

Quiero, teniendo en cuenta la hora actual REAL, que me indique

parada 1 - llega el bus en 10 minutos
parada 2 - llega el bus en 30 minutos
etc
 
Gracias por la ayuda [MENTION=192694]alea[/MENTION] - creo que debe haber una forma más sencilla, un programador me dijo que tuviera en cuenta las 12 de la noche, no sé si pasando todo a minutos y restando de los minutos esperados del bus... qué enredo...
 
Es necesario comparar tu hora actual con el listado de horas que tengas para saber si es mayor o menor, en este ejemplo el mas cercano es paradero Paradero 3


Saludos.

¿Se te ocurre alguna forma de hacerlo con una fórmula más simple que no implique "ifs" (condicionales)?

Gracias por la ayuda.
 
¿Se te ocurre alguna forma de hacerlo con una fórmula más simple que no implique "ifs" (condicionales)?

Gracias por la ayuda.

PHP:
<?php
$a = array("12:10","12:30","12:40");
foreach($a as $b){
	$datetime1 = new DateTime(date("H:i"));
	$datetime2 = new DateTime($b.'+00:00');
	$inter = $datetime1->diff($datetime2);
	echo "Pasa en ".$inter->h." horas ".$inter->i." minutos<br/>";
}
Resultado:
Pasa en 14 horas 41 minutos
Pasa en 14 horas 21 minutos
Pasa en 14 horas 11 minutos

solo se ponen las horas en un array y listo.
 
PHP:
<?php
$a = array("12:10","12:30","12:40");
foreach($a as $b){
	$datetime1 = new DateTime(date("H:i"));
	$datetime2 = new DateTime($b.'+00:00');
	$inter = $datetime1->diff($datetime2);
	echo "Pasa en ".$inter->h." horas ".$inter->i." minutos<br/>";
}
Resultado:


solo se ponen las horas en un array y listo.

No sé PHP, irá en excel lo más probable ¿me puedes explicar la lógica para pasarlo?

gracias
 
Hola! en efecto una de las posibles soluciones mas sencillas para calcular el tiempo del próximo bus como lo han mencionado antes es colocar la hora de inicio , posteriormente echar a andar el contador del tiempo transcurrido para luego este ser restado al tiempo inicial obteniendo de esta manera la hora de llegada, ademas de eso lo que le comentan del if también puede utilizarse este condicional si se cargan varias horas de salida por lo que se le pondría la condición de indicar cual es el bus que pasa primero, esto en el código y en la base de datos le lanzas un order by con la condición de ordenar ASC o DESC
 
Hola! en efecto una de las posibles soluciones mas sencillas para calcular el tiempo del próximo bus como lo han mencionado antes es colocar la hora de inicio , posteriormente echar a andar el contador del tiempo transcurrido para luego este ser restado al tiempo inicial obteniendo de esta manera la hora de llegada, ademas de eso lo que le comentan del if también puede utilizarse este condicional si se cargan varias horas de salida por lo que se le pondría la condición de indicar cual es el bus que pasa primero, esto en el código y en la base de datos le lanzas un order by con la condición de ordenar ASC o DESC

No entendí mucho de lo que intentas explicar (sería bueno algunos ejemplos prácticos) pero te agradezco la información.
 
Atrás
Arriba