Intentando emular la renovación de un reloj de 24 horas a mano (con matemática vs. usando las clases de tiempo). La parte de incremento fue fácil de entender cómo pasar de las 23:00 a las 0:00 y desde allí, pero lograr que vaya para el otro lado es realmente confuso. Esto es lo que tengo hasta ahora:C#: decrementando un reloj usando el módulo matemático
static void IncrementMinute(int min, int incr)
{
int newMin = min + incr,
hourIncrement = newMin/60;
//increment or decrement the hour
if((double)newMin % 60 < 0 && (double)newMin % 60 > -1)
hourIncrement = -1;
Console.WriteLine("Hour increment is {0}: ", hourIncrement);
}
El problema que im hallazgo es cuando se va hacia atrás, si el módulo de es entre los números, no va a disminuir correctamente. Ejemplo: son las 12:00 y restas 61 minutos, sabemos que el tiempo sería 10:59 ya que la hora debería retroceder 1 hora para ir de 12:00 a 11:59, luego de vuelta para las 11:00 a 10:59. Lamentablemente, la forma de calcularlo: newMin% 60 en este caso, solo capta la primera hora de retroceso, pero dado que la segunda reversión es técnicamente -1.0166 como un resto, y dado que mod solo devuelve un número entero, se redondea. Estoy seguro de que me faltan algunas matemáticas básicas aquí, pero ¿podría alguien ayudarme?
EDITAR: He escrito esto de varias maneras. Algunos están más cerca que otros, pero sé que esto es más simple de lo que parece. Sé que este parece un poco "¿Qué estaba haciendo él?", Pero deberían poder ver básicamente lo que trato de hacer. Incrementar un reloj y hacer que se mueva de 23:59 a 0:00 es fácil. Retroceder ha demostrado no ser tan fácil.
OK, aquí está el incrementoMinute con la reinversión. Sencillo. Pero trata de ir hacia atrás. No funciona
static void IncrementMinute(int min, int incr)
{
int newMin = min + incr,
hourIncrement = newMin/60;
min = newMin % 60;
Console.WriteLine("The new minute is {0} and the hour has incremented by {1}", min, hourIncrement);
}
¿Es posible añadir un poco más detalles de esto, en particular, un ejemplo de uso y estado esperado de la variable global? – steinar
¿Qué valores tienen 'min' y' incr'? – ChrisF
Creo que sí di esos ejemplos. Básicamente, ¿cómo codigo el decremento para tener 12:00 - 0:61 = 10:59 y hacer que funcione para incrementos también? – Sinaesthetic